39 lines
1.1 KiB
PowerShell
Executable File
39 lines
1.1 KiB
PowerShell
Executable File
#!/usr/bin/env pwsh
|
||
. /opt/idssys/powerwall/conf/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 '*Migrate*' -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
|