2017-09-05 28 views
1

我在PowerShell中通過VSTS運行命令以影響Azure。該命令起作用,但它後面會出錯。這些參數和連接正在發揮作用,證明了該組獲得命令許可的事實。我想一個解決方法是將該命令放在try塊中,讓它運行,然後當錯誤出現時轉到catch塊並結束而不拋出錯誤。Powershell嘗試塊不能在VSTS版本上工作

當我運行這個腳本時,我仍然得到相同的錯誤,就像try塊被忽略。我的語法錯了嗎?

Try 
{ 
    New-AzureRmRoleAssignment -ObjectId "xxxx" -RoleDefinitionName $roleName -ResourceGroupName pentest-$featureName 
} 
Catch 
{ 
    Write-Output "Whoops" 
} 

編輯:我在try塊之前添加$ErrorActionPreference = "Stop"並且使其正常運行所捕獲的錯誤。

+2

檢查'$ ErrorActionPreference'的值。如果不是'停止','catch'將不會運行。讓我們知道如果這是問題,我會寫一個更完整的答案。還有一種情況是一些小命令不會在沒有更多極端步驟的情況下「捕捉」。顯式地添加參數'-ErrorAction Stop'將在命令的基礎上實現所需的結果。 –

+0

我檢查了構建服務器,它是繼續的 – user3364161

回答

0

由於錯誤的$ErrorActionPreference,try塊被忽略。將其從「繼續」更改爲「停止」修復它。

相關問題