1

Jason Archer 帮助我解决了上一个问题,但在测试他的解决方案时,我偶然发现了真正的问题。我的服务器无法正确运行链接的后台作业,但我的笔记本电脑可以。

如果我在笔记本电脑上运行上一个问题中的脚本,它们可以完美运行。脚本 A 将脚本 B 作为后台作业启动,脚本 B 从该作业中调用脚本 C,并接收所有输出。如果我在服务器上运行完全相同的脚本,脚本 A 会调用脚本 B,而脚本 B 会无限期挂起。如果我直接运行脚本 B,它会在服务器或笔记本电脑上完美执行。这是关于工作的背景让我死去的事情。

$PSVersionTable 在所有计算机上返回相同的结果,但很明显我必须在 WinXP 和 Win2003R2 上使用不同的安装程序。

什么可能导致行为差异?

有没有办法解决后台作业中发生的事情?如果我可以看到正在接收的命令行(我已经记录了发送的内容,但有时事情会漂移),或者什么对象真的在挂东西,也许它会有所帮助,但调试器不会把我带到那里。也许有一种方法可以在 ISE 中调用该作业,就好像它在后台运行一样?

4

2 回答 2

1

啊。我想也许我有我的答案。

笔记本电脑:

PS Z:\jobs> winrm quickconfig
WinRM already is set up to receive requests on this machine.
WinRM already is set up for remote management on this machine.

服务器:

PS D:\jobs> winrm quickconfig
WinRM already is set up to receive requests on this machine.
WinRM is not set up to allow remote access to this machine for management.
The following changes must be made:

Create a WinRM listener on HTTP://* to accept WS-Man requests to any IP on this machine.

如果有人可以确认这一点或提供有关故障排除后台作业的信息,我会标记已回答的问题。

于 2011-03-04T16:31:17.597 回答
0

您可以使用Receive Job获取 Powershell 作业的输出结果。例如,如果我们有如下工作:

$myJob = start-job -ScriptBlock  { 
    Write-Output "Some stuff happening..."
    throw "Hello World!"
}

我们可以像这样得到作业的输出:

Receive-Job $myJob    #prints the message and exception
于 2011-05-04T23:47:16.317 回答