我尝试在后台重启服务,然后监控服务是否已重新启动。如果服务暂时没有启动,则重新启动服务。
我遇到了在后台重启服务的问题,start-job命令确实运行,这样我很可能会出错。 restart-service和do命令正常工作,无法让它在后台运行。
$a = "Restart-Service -InputObject $(get-service -ComputerName $Server -Name Service)"
start-job -scriptblock {$a}
do {
($Check = (Get-Service -ComputerName $RadSvr -Name IAS).status -eq "Running") }
Until ($check -eq $true)
在玩完之后,我注意到如果我没有在Start-Job中使用变量,脚本会在后台运行。所以,如果我将启动作业更改为包含服务器的IP地址
start-job -scriptblock { Restart-Service -InputObject $(get-service -ComputerName 10.10.10.10 -Name Service) }
任何人都知道如何使变量工作?
答案 0 :(得分:1)
也许您可以通过使用流程函数来简化代码
$service = Get-Service -Name $servicename -ComputerName $targetcomputer
$service.Stop();
$maxTimeout = "00:03:00"
$service.WaitForStatus('Stopped', $maxTimeout);
# check again the status and eventually perform another action
答案 1 :(得分:0)
使用Wait-Job
等待作业完成。
$a = "Restart-Service -InputObject $(get-service -ComputerName $Server -Name Service)"
$job = start-job -scriptblock {$a}
Wait-Job $job
答案 2 :(得分:0)
我让脚本正常工作。我需要在param
-argumentlist
和start-job
start-job -scriptblock {param($Server) Restart-Service -InputObject $(get-service -ComputerName $Server -Name Service)} -Argumentlist $Server