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
我有以下 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