6

我正在尝试在 PowerShell 2.0 中执行基本的后台作业,并且在 start-job 和 invoke-command -asjob 中看到了不同的东西。

如果我这样做:

start-job -scriptblock {get-process}

我得到一个作业对象,但子作业(由 start-job 自动创建)始终具有“NotStarted”的 JobStateInfo。

但是,这可以按预期工作:

invoke-command -scriptblock {get-process} -computer localhost -asjob

我已经运行了 enable-psremoting ....我还需要做什么才能让后台作业正常工作?

4

2 回答 2

3

第一个使用 start-job 的示例不使用 HTTP 进行调用,而是使用带有 WinRM 的 IPC 通道来运行;这种方式不需要管理权限。第二个带有 invoke-command 的示例确实需要管理员权限(默认情况下)并将通过 HTTP 和 WinRM 进行连接。

老实说,我本以为第二个对大多数人来说会失败。如果您针对 start-job 调用的 ID 运行:Receive-Job,您会收到任何错误消息吗?

-Oisin

于 2009-11-12T23:15:19.350 回答
0

要接收更新的 JobStateInfo,您需要使用 Get-Job 和 Start-Job 创建的作业。但是,如果您使用此信息来查看作业何时完成,Wait-Job 或 Receive-Job -wait 可能更适合您的需求。

Wait-Job 只是等待,直到指示的作业或作业列表完成,然后再继续。Receive-Job -wait 做同样的事情,但它也收集作业的结果/输出。

于 2015-03-16T15:17:24.543 回答