2016-01-27 35 views
1

我的腳本中存在一個奇怪的問題。 我在一些服務器上調用一個命令。如果我無法連接到服務器(因爲它離線或什麼的),我仍然想記錄(服務器離線> log.txt)使用Invoke-Command時Try&Catch不工作

顯然,當Try塊發生錯誤時,Catch塊不是執行。

爲了測試這個,我給ComputerName參數寫了一個不存在的值。 這裏是我的代碼:

Try { 
    Invoke-Command -ComputerName hui -ScriptBlock $sb 
} 
Catch { 
    Write-Host "Hello" 
} 

但腳本從未推出「你好」

我得到的例外是PSRemotingTransportException。我也試圖指定例外,也沒有工作

當我在Invoke-Command行設置斷點時,它也忽略catch塊。爲什麼?

回答

5

這不是一個終止錯誤,所以它永遠不會被try/catch抓住。添加-ErrorAction Stop

Try { 
    Invoke-Command -ComputerName hui -ScriptBlock $sb -ErrorAction Stop 
} 
Catch { 
    Write-Host "Hello" 
} 
+0

非常感謝。這是非常豐富的信息,因爲我從來沒有真正明白我應該用'-ErrorAction'參數做什麼。現在就像一個魅力! – SimonS