Szybkie komendy ułatwiające prace administratora vSphere.
Github dla większych skryptów https://github.com/sebastiangrugel/PowerCLI
Przydatne linki:
Wylistowanie dostępnych interfejsów oraz fizycznych kart sieciowych (vmkernel + vmnic):
Get-VMHostNetworkAdapter -vmhost esxihost.local
Dodanie kolejnego interfejsu (vmkernela do vMotion) w ESXi:
New-VMHostNetworkAdapter -VMHost "esxihost.local" -PortGroup "PORTGROUPNAME" -VirtualSwitch "vDS-NAME" -IP 192.XXX.XXX.XXX -SubnetMask 255.XXX.XXX.XXX -VMotionEnabled:$true
Usunięcie konkretnego interfejsu (vmkernela) na ESXie:
Get-VMHostNetworkAdapter -vmhost esxihost.local -name vmk1 | Remove-VMHostNetworkAdapter
Sprawdzenie IPv6 czy jest włączony na ESXi hostach czy nie.
Get-VMHost esxihost.local| Get-VMHostNetwork | Select VMHost,IPv6Enabled
Wyłączanie IPv6 na hostach o okreslonej nazwie:
Get-VMHostNetwork esxihostname* | Set-VMHostNetwork -IPv6Enabled:$false
Po zmianie wymagany jest dla widocznego efektu reboot hosta.
Zarządzanie stanami ESXi hosta:
Set-VMHost esxihost.local -State "Maintenance" Set-VMHost esxihost.local -State "Connected" Set-VMHost esxihost.local -State "Disconnected"
Usuwanie niepotrzebnego “netstack” vmotion z hosta:
$vmhost = Get-VMHost -Name esxihost.local $esxcli = Get-EsxCli -VMhost $vmhost -V2 #Listuje $esxcli.network.ip.netstack.list.invoke() #Usuwa $esxcli.network.ip.netstack.remove.invoke(@{netstack = "vmotion"})
Wylistowanie informacji o hostach w vCenter ( w jakim klastrze są, jaki mają HW, jaką wersje ESXi):
Get-VMHost | select parent,name,Manufacturer,Model,ProcessorType,version | Export-Csv D:\Temp\prod_esx2.csv
Konwersja wyniku komendy na HTML (przykład):
$vms | ConvertTo-Html |out-file 'C:\output.html'
Użycie Get-View(przykład):
$vm = Get-Vm|get-view $vm.Config $vm.Config.Version
Wlączenie maszyny lub wylączenie maszyny na specyficznym hoście do którego się zalogowaliśmy:
$credESX = get-credential root $esx = Connect-VIserver -Server 10.1.1.111 -Credential $credESX Start-VM -Server $esx -VM $vm -Confirm Stop-VM -server $esx -VM $vm -kill
Tworzenie maszyny(przypadek gdzie mamy tylko 1 datastore):
$credVC = get-credential administrator@vsphere.local $vc = Connect-VIServer -Server 10.101.1.120 -Credential $credVC $name = "SuperBIGvm" $datastore = get-datastore -server $vc New-Vm -Name "SuperBIGvm" -Datastore $datastore -Version v13 -NumCpu 2 -DiskGB 10 -MemoryGB 2
Aktualizacja VMware Tools bez restartu:
Get-VMGuest -VM $vm | Update-Tools -NoReboot
Tworzenie pliku z logowaniem postępu skryptu (przykład):
$date = get-date $reportTXT = 'C:\Report.txt' #Reporting start of script $log = "Started update and linked clone create script on $date" $log |Out-File $reportTXT -Append #report to log file $Name = $Vms.name $log = "Selected the following VM's for action" $log |out-file $reportTXT -Append $Name |out-file $reportTXT -Append $log = "Created VM called $name" $log |Out-File $reportTXT -Append $log = "Started all machines:" $log|out-file $reportTXT -Append start-process $reportTXT
Jak zainstalowac lub zaktualizować PowerCLI poprzez Powershell Gallery
# Sprawdzenie zainstalowanych modułów Get-module -Verbose VMware* -ListAvailable # Sprawdzenie wersji na serwerze Find-Module -Name VMware.PowerCLI # Instalacja powercli Install-Module -Verbose -Name VMware.PowerCLI –Scope CurrentUser # Update do nowej wersji Update-Module -Verbose -Name VMware.Powercli #-Verbose oczywiscie nie jest wymagane ale obrazuje co się dzieje w danym momencie.
Jak podłączyć sieć do maszyny wirtualnej (checkbox). Działa na włączonej maszynie:
Get-VM -Name NAZWAMASZYNY | Get-NetworkAdapter | Set-NetworkAdapter -Connected:$false -Confirm:$false Get-VM -Name NAZWAMASZYNY | Get-NetworkAdapter | Set-NetworkAdapter -Connected:$true -Confirm:$false
Wykonanie prostego klona konkretnej maszyny wirtualnej:
New-VM -Name ORYGINALNAMASZYNA -VM NOWAMASZYNA -Datastore NAZWADATASOTRA -vmhost NAZWAHOSTA -DiskStorageFormat thin
Przeszukuje całe vCenter w poszukiwaniu VMki z zamontowanymi VMware Toolsami i próbuje je odmontować:
get-view -viewtype virtualmachine -property ‘name’ -Filter @{‘Runtime.ToolsInstallerMounted’=’True’} | foreach{$_.UnmountToolsInstaller()}
Listuje zamontowane VMware Toolsy na klastrze wskazując nazwe VMki i hosta:
Get-Cluster *gold* | Get-VM | Get-CDDrive | where{$_.IsoPath -match "vmware/isoimages"} | %{$_.parent } | select name,vmhost
Listuje zamontowane VMware Toolsy na klastrze wskazując nazwe VMki i hosta. Następnie odmontowywuje je:
Get-Cluster *gold* | Get-VM | Get-CDDrive | where{$_.IsoPath -match "vmware/isoimages"} | Set-CDDrive -NoMedia -Confirm:$false
Kopia zapasowa konfiguracji ESXi (przykład):
Connect-VIServer -Server $esxihost -user $esxihostuser -password $esxihostpasswd Get-VMHostFirmware -VMHost $esxihost -BackupConfiguration -DestinationPath D:\
Włączenie i wyłączenie SSH na wszystkich hostach w klastrze:
#Włączenie SSH Get-Cluster CLUSTERNAME | Get-VMHost | Get-VMHostService |Where key -Match tsm-ssh | where Running -Match false | Start-VMHostService -Confirm:$false #Wyłączenie SSH Get-Cluster CLUSTERNAME | Get-VMHost | Get-VMHostService |Where key -Match tsm-ssh | where Running -Match true | Stop-VMHostService -Confirm:$false
Włączenie SSH na 1 hoście
#Włączenie SSH Get-VMHost esxi.akademiadatacenter.pl | Get-VMHostService | Where key -Match tsm-ssh | where Running -Match false | start-VMHostService -Confirm:$false
Zarządzanie snapshotami:
# Tworzenie snapshotów na grupie maszyn z koncówkami 1 2 oraz 3 get-vm VMNAME_[123] | new-Snapshot -name Before_Update_XXXX -Description "Date_01012020_created_by_SG" # Kasowanie wszystkich snapshotów z grupy maszyn z końcówkami 1 2 oraz 3 get-vm VMNAME_[123] | Get-Snapshot -Name before* | Remove-Snapshot
Zarządzanie snapshotami – test SNAPSHOOT by Karol Z. – tworzy 50 snapszotów następnie je usuwa 🙂
for ( $i=1 ; $i -le 50 ; $i++) {get-vm kz-db[12]* | New-Snapshot -Description kz -Name kztest$i -Quiesce -Memory ; Start-Sleep -Seconds 5 ;get-vm kz-db[12]*| get-snapshot -name kztest$i | remove-Snapshot -Confirm:$false }
Listowanie maszyn na konkretnym ESXi + resource poola + folder (w vCenter)
Get-VMHost esxi.akademiadatacenter.pl | get-vm | select id, name , ResourcePool , {$_.folder.parent.parent }
Listowanie eventów w vCenter mających w treści słowo “restarted”. CEL: identyfikacja maszyn, które zrestartowały się po awarii ESXi.
Get-VIEvent -MaxSamples 2000 -Start (Get-Date).AddDays(-1) -Type Warning | Where {$_.FullFormattedMessage -match "restarted"} |select CreatedTime,ObjectName,FullFormattedMessage| sort CreatedTime -Descendin
Wyszukiwanie wpisów w eventach w vCenter
foreach ($vmm in get-vm * ) {$vmm |Get-VIEvent -Start 2020.03.23 -MaxSamples 1000 | ? FullFormattedMessage -Match Ethernet0 | select {$vmm.Name} , CreatedTime,FullFormattedMessage }
Znajduje wszystkie maszyny z podczepionymi ISO
Get-Cluster *gold* | Get-VM | Get-CDDrive | ? {$_.isopath} | %{$_.parent }
Przenosi wszystkie maszyny które maja w konfiguracji ISO na jednego hosta (mozna go w ostatecznosci zrobic na koncu)
Get-Cluster *gold* | Get-VM | Get-CDDrive | ? {$_.isopath} | %{$_.parent } | Move-VM -Destination esxi.akademiafatacenter.pl
Dodam Cię do listy mailowej, z której możesz wypisać się w dowolnym momencie (jeden klik.) | Polityka Prywatności