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

受信ジョブを使用して、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 に答える