У меня есть скрипт, который может вызывать vms на основе имен, введенных в массив.Powershell Shutdown VM Script
Эта часть работает нормально, но следующая часть после инициализации выключения должна ждать определенного периода и уведомлять, сколько vms ожидает ожидания, прежде чем перейдет к другой фазе выключения других vms.
Я не получаю никаких vms, подсчитанных из массива. Вот код для конкретной фазы:
$waittime = 5 #Seconds
#Create Phase 1 Array
[Array] $PHASE1 = "TestSvr2008"
# For each of the VMs on the Hyperv hosts that are powered on
Foreach ($VM in ($PHASE1 | %{ Get-VM | Where { $_.State -eq "Running" }})){
# Shutdown the guest cleanly
$VM | Stop-VM -Confirm:$false }
# Set the amount of time to wait before assuming the remaining powered on guests are stuck
$waittime = 120 #Seconds
$Time = (Get-Date).TimeofDay
do {
# Wait for the VMs to be Shutdown cleanly
sleep 1.0
$timeleft = $waittime - ($Newtime.seconds)
$numvms = ($PHASE1 | %{ Get-VM | Where { $_.$VM -eq $PHASE1 }}).Count
Write "Waiting for shutdown of $numvms VMs or until $timeleft seconds"
$Newtime = (Get-Date).TimeofDay - $Time
} until ((@($PHASE1 | %{ Get-VM | Where { $_.$VM -eq $PHASE1 }}).Count) -eq 0 -or ($Newtime).Seconds -ge $waittime)
Благодаря
Спасибо! Ill дать ему пойти – thedudeabides
Хорошо, новая проблема, если у меня более одного vm, а имя vm отсутствует в массиве, vm все равно закрывается, любые идеи? – thedudeabides