Szybkie komendy ułatwiające prace administratora vSphere.

Github dla większych skryptów https://github.com/sebastiangrugel/PowerCLI

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"})

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