2011-03-04 75 views
1

Jason Archer幫我解決了my last issue,但在測試他的解決方案時,我偶然發現了真正的問題。我的服務器不會正確運行鏈接後臺作業,但我的筆記本電腦會。如何調試PowerShell後臺作業?

如果我在我的筆記本電腦上運行上一個問題中的腳本,它們會很好地工作。腳本A啓動腳本B作爲後臺作業,腳本B從該作業中調用腳本C,並接收所有輸出。如果我在我的服務器上運行完全相同的腳本,腳本A調用腳本B,腳本B無限期地掛起。如果我直接運行腳本B,它可以在服務器或筆記本電腦上完美運行。這是關於後臺工作的事情,這是殺了我。

$ PSVersionTable在所有計算機上都會返回相同的結果,但顯然我必須在WinXP和Win2003R2上使用不同的安裝程序。

什麼可能會導致行爲上的差異?

是否有任何方法來解決後臺作業中發生了什麼?如果我能看到接收到的命令行(我已經記錄了發送的內容,但有時會發生一些事情),或者什麼對象真的掛了,可能會有幫助,但調試器不會把我帶到那裏。也許有辦法在ISE中調用這個工作,就好像它在後臺運行一樣?

回答

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. 

如果任何人都可以證實這一點,或者提供故障排除後臺作業的信息,我會標記回答了這個問題。

+0

我懷疑的解決我的問題,將是對所有啓用遠程我的服務器,但我可以使用Start-Process將它們作爲前臺作業啓動。這很奏效。 – codepoke 2011-03-04 16:51:52

0

您可以通過使用接收作業來獲得Powershell作業的輸出結果。舉例來說,如果我們有一個工作像如下:

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

我們可以得到這份工作,像這樣的輸出:

Receive-Job $myJob #prints the message and exception 
+0

根據我的原始問題,在啓用遠程處理的計算機上運行時,我可以毫無困難地接收我的作業。這不是混淆的地方。我正在嘗試(儘管現在不是很難)來確定問題是出在WMI還是遠程處理上。我已經聽到了答案,但我已經接近在我們所有服務器上啓用了遠程處理功能。那將是美好的一天。 – codepoke 2011-05-05 12:08:00