此代码无效:
$scriptBlock = {
Param($i)
$i
}
for ($i=1; $i -le 2; $i++) {
Start-Job -ArgumentList $i -ScriptBlock $scriptBlock | Out-Null
}
sleep 5
Get-Job
Write-Host "end"
输出:
Id Name PSJobTypeName State HasMoreData Location Command -- ---- ------------- ----- ----------- -------- ------- 2 Job2 BackgroundJob Running True localhost ... 4 Job4 BackgroundJob Running True localhost ... end
正如您所看到的,当作业应该很快完成时,作业仍在运行。实际上,这个
(Get-Job -Id 2).ChildJobs
会给我
Id Name PSJobTypeName State HasMoreData Location Command -- ---- ------------- ----- ----------- -------- ------- 3 Job3 NotStarted True localhost ...
注意未启动。知道为什么它从未开始吗?
注意:这也会挂起PowershellISE。
但是,如果我在开头放入一个断点并逐步完成脚本,那么一切正常。