【发布时间】:2019-10-22 05:58:08
【问题描述】:
我有一个 Start-Job -ScriptBlock,如果我等待作业完成,它将正确运行。如果我不等待/接收作业完成状态,则 -ScriptBlock 不会运行。我不确定我错过了什么。可能不了解 PS 后台作业的基本行为。
这是在 Win 2012R2 服务器上运行的。以下是我的 $PSVersionTable 转储:
Name Value
---- -----
PSVersion 5.0.10586.117
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...}
BuildVersion 10.0.10586.117
CLRVersion 4.0.30319.42000
WSManStackVersion 3.0
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1
我尝试在 -ScriptBlock 之前和之后放置测试以捕获其他错误,但整个 -ScriptBlock 似乎根本没有运行。
例如,我的设置中当前可以使用以下内容:
Start-Job -ScriptBlock {
New-Item -Path 'c:\ivanti-patch-automation\logs\tempfile.txt' -ItemType File
} | Wait-Job
文件已正确创建。
以下不起作用。唯一的变化是删除管道命令 Wait-Job。
Start-Job -ScriptBlock {
New-Item -Path 'c:\ivanti-patch-automation\logs\tempfile.txt' -ItemType File
}
我希望两者都能工作,但我不确定为什么等待工作完成会影响它是否工作。
【问题讨论】:
-
开始工作后您的 PowerShell 会话在做什么?执行其他命令,返回提示符还是直接终止?
-
最合适的评论,我会赞成但还没有足够的声誉。谢谢 PetSerAl。
标签: powershell start-job