我想知道是否有人可以帮我解决这个问题。我有这个声明来停止服务但有时服务有时因为依赖而没有停止,所以我添加了一个start-sleep -s 5.
while($module | Get-Service | ? {$_.Status -eq "Running" -or $_.Status -eq "Stopping"})
{
set-service $module -ComputerName $targetserver -StartupType Disabled -Status Stopped -PassThru
;
Start-Sleep -Seconds 5 #keep repeating stop services every 5 seconds until all services have stopped
}
我想添加一个计数器,以便在60秒后停止循环,如果服务仍在运行,则转到write-host
r n "Service not stopped."
感谢任何帮助。谢谢大家。
答案 0 :(得分:5)
60/5 = 12次循环。
while (test -and ($counter++ -lt 12)) {
#stop-service
#start-sleep
}
但是经过长时间的测试,它可能更具可读性:
do
{
set-service $module -ComputerName $targetserver -StartupType Disabled -Status Stopped -PassThru
Start-Sleep -Seconds 5
$status = ($module | Get-Service).Status
$loopCounter++
} while ($status -in ('Running', 'Stopping') -and ($loopCounter -lt 12))