我是 Powershell 的新手,我遇到了 Get-Job 命令的问题。在我的脚本中,我正在测试多线程并正在做类似的事情:
$Program = {
"Thread " + $args[0];
Start-Sleep 5;
}
Start-Job $Program -ArgumentList @($i) | Out-Null
Start-Job 调用实际上是在我创建多个作业的循环中。在此之下,我有:
Get-Job
"Jobs Running: " + $(Get-Job -State Running).count
如果有多个作业正在运行,我将得到如下输出:
Id Name State HasMoreData Location Command
-- ---- ----- ----------- -------- -------
2201 Job2201 Running True localhost ...
2199 Job2199 Running True localhost ...
2197 Job2197 Running True localhost ...
2195 Job2195 Running True localhost ...
2193 Job2193 Completed True localhost ...
2191 Job2191 Completed True localhost ...
2189 Job2189 Completed True localhost ...
2187 Job2187 Completed True localhost ...
Jobs Running: 4
但是,如果只有一项工作正在运行,似乎$(Get-Job -State Running).count
没有返回任何内容:
Id Name State HasMoreData Location Command
-- ---- ----- ----------- -------- -------
2207 Job2207 Running True localhost ...
Jobs Running:
如您所见,有一个作业正在运行,但$(Get-Job -State Running).count
没有返回任何内容。知道这里发生了什么吗?对我来说,如果有多个作业,则$(Get-Job -State Running)
返回具有 .count 属性的作业集合,而如果只有一个作业,则仅返回该作业,并且没有 .count 属性。如果是这种情况(或者如果我做错了什么),我应该使用什么命令来获得我的预期结果$(Get-Job -State Running).count == 1
?