我有以下PowerShell 5程序:
$job = Start-Job -ScriptBlock {timeout.exe 10 /NOBREAK}
Wait-Job $job
当我运行它时,它立即终止,输出如下:
Id Name PSJobTypeName State HasMoreData Location Command -- ---- ------------- ----- ----------- -------- ------- 1 Job1 BackgroundJob Completed True localhost timeout.exe 10 /NOBREAK
和timeout.exe
未出现在任务管理器中。
为什么在终止前不等待10秒?当我在作业外调用timeout.exe 10 /NOBREAK
时,它会等待10秒,就像在作业中调用Start-Sleep 10
一样。
我不是在寻找一种不同的方法来解决同样的问题(睡眠),但专门针对为什么这个程序的行为方式的回答。
答案 0 :(得分:1)
这里的问题是,对于timeout.exe捕获Ctrl + C,它会重定向输入,这在后台作业中不起作用。显然,如果您只想睡觉,那么Start-Sleep就可以了。
您可以通过执行以下操作查看作业的输出和错误消息:
Receive-Job 1