我有以下Powershell代码,它是预定作业的一部分:
#Start threaded jobs
$ScriptBlock = {
$timeout = new-timespan -minutes 5
$sw = [Diagnostics.Stopwatch]::StartNew()
while ($sw.elapsed -lt $timeout){
start-sleep -seconds 5
}
if (($sw.elapsed -ge $timeout) -and $sw.IsRunning){shutdown -r -t 20}
}
"Test before job"| Out-File C:\Log.txt -Append
Start-Job $ScriptBlock -name Timeout
"Test after job"| Out-File C:\Log.txt -Append
### do whatever ###
Stop-Job -name Timeout
当我手动运行时,代码按预期执行。但是,如果我将它作为预定的工作运行,那么Job" Timeout"执行但脚本不会并行继续。因此,作业将等待5分钟并重新启动计算机,而不是并行执行命令。
知道为什么会这样吗?