PowerShell 不会开始工作

PowerShell won't start job

我有以下 PowerShell 5 程序:

$job = Start-Job -ScriptBlock {timeout.exe 10 /NOBREAK}
Wait-Job $job

当我 运行 它时,它立即终止并输出以下内容:

ID 名称 PSJobTypeName 状态 HasMoreData 位置 命令
-- ---- ------------ ----- ------------ -------- ------
1 Job1 BackgroundJob Completed True localhost timeout.exe 10 /NOBREAK

并且 timeout.exe 没有出现在任务管理器中。

为什么不等待 10 秒后终止?当我在作业外调用 timeout.exe 10 /NOBREAK 时,它会等待 10 秒,在作业中调用 Start-Sleep 10 也是如此。

我不是在寻找解决相同问题(睡眠)的不同方法,而是专门寻找 为什么 这个程序的行为方式的答案。

这里的问题是 timeout.exe 捕捉 Ctrl+C 时,它会重定向输入,这在后台作业中不起作用。显然,如果您只想睡觉,那么 Start-Sleep 就可以了。

您可以通过以下操作查看作业的输出和错误消息:

Receive-Job 1