2017-03-22 92 views
0

代碼:PowerShell的工作流程重新啓動計算機

workflow Test-RemoteReboot{ 
    param ([string[]]$serverNames) 
    foreach -parallel($server in $serverNames){ 
     Restart-Computer -PSComputerName $server -Wait -Force 
    } 
} 

Test-RemoteReboot SP,SP2 

問題: 這是一個相當長的流程我建立在PowerShell中一個小摘錄。從各方面來看,這應該工作,但我得到以下錯誤(運行在隔離這個腳本,即使):

Microsoft.PowerShell.Utility \寫入錯誤:正在運行的命令停止,因爲選項變量「ErrorActionPreference」或通用參數設置爲「停止」:計算機SP2跳過 。無法通過WMI服務檢索其LastBootUpTime並顯示以下錯誤消息:RPC服務器不可用。 (來自HRESULT的異常:0x800706BA)。 在行:433字符:25 + ...接收在職-Job $工作-Wait -Verbose -Debug -ErrorAction ... + ~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + CategoryInfo:NotSpecified:(:) [[寫錯誤],ActionPreferenceStopException + FullyQualifiedErrorId:System.Management.Automation.ActionPreferenceStopException,Microsoft.PowerShell.Commands.WriteErrorCommand + PSComputerName:[本地主機]

我看着RPC服務器不可用的問題。防火牆關閉,RPC服務正在運行,服務器在域中,工作流從域成員計算機運行,作爲域管理員。我可以成功將PSRemote放入機器並做任何事情。我甚至可以這樣做:

workflow Test-LocalRebootRemotely{ 
param ([string[]]$serverNames) 
    foreach -parallel($server in $serverNames){ 
     InlineScript { Restart-Computer -Force } -PSComputerName $server 
    } 
} 

Test-LocalRebootRemotely SP,SP2 

的問題是,是,我需要一個返回值來確定,如果我需要重新啓動和處理遠程計算機之外的其他邏輯。我注意到錯誤發生之前有一個異常暫停。所以也許是暫停?任何人都有類似的問題?

回答

0

您可以使用-Protocol WSMan參數而不是RPC協議上的默認DCOM(-Protocol DCOM)來嘗試使用Restart-Computer cmdlet。

這將確認您的RPC網絡數據包的地方封鎖。

相關問題