#!/usr/bin/env pwsh . /opt/idssys/powerwall/settings.ps1 Connect-VIServer -Force -Server $args[0] -Protocol https -User $ESXiUsername -Password $ESXiPassword | Out-Null Get-VM | Where {$_.PowerState -like '*On*'} | Shutdown-VMGuest -Confirm:$false # $vms=Get-VM | Where {$_.PowerState -like '*On*'} # Foreach ($vm in $vms) # { # $migrating=Get-Task | ?{$_.ObjectId -match 'VirtualMachine'} | Select @{N='VM';E={(Get-View -Id $_.ObjectId).Name }},State,Description | where {$_.VM -eq $vm -and $_.Description -like '*Relocate*' -and $_.State -eq 'Running'} # if ([string]::IsNullOrEmpty($migrating)) { # Get-VM $vm | Shutdown-VMGuest -Confirm:$false # } # } Do { $VMLIST = Get-VM | Where {$_.PowerState -like '*On*'} if ($VMLIST -ne $null) { $poff = 'no' Foreach ($VM in $VMLIST) { $VMI = Get-VM $VM if ($VMI -eq $null -Or $VMI.PowerState -match 'PoweredOn') { $poff = 'no' break } else { $poff = 'yes' } } Start-Sleep -s 1 } else { $poff = 'yes' } } Until ($poff -match 'yes') Stop-VMHost $args[0] -Force -Confirm:$false Disconnect-VIServer -Server $args[0] -Force –Confirm:$false