2017-09-05 9 views
1

私はAzureに影響を与えるためにVSTSを通してPowershellでコマンドを実行しています。コマンドは機能しますが、後にエラーが発生します。 paramsと接続は、グループがコマンドから許可を得ていることからもわかります。回避策は、tryブロックにコマンドを置き、実行させてから、エラーが発生したときにcatchブロックに行き、エラーをスローせずに終了することです。Powershell tr​​yブロックがVSTSビルドで動作しない

このスクリプトを実行すると、tryブロックが無視されるのと同じエラーが表示されます。構文が間違っていますか?

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

編集:私は、tryブロックの前に$ErrorActionPreference = "Stop"を追加し、それが適切にエラーをキャッチ。

+2

'$ ErrorActionPreference'の値を確認してください。 'Stop'でなければ、' catch'は実行されません。それが問題なのかどうか私たちにお知らせください。私はより完全な回答を書くつもりです。いくつかのコマンドレットでは、極端な手順をとることなく「キャッチ」しない場合もあります。引数 '-ErrorAction Stop'を明示的に追加することで、コマンドごとに目的の結果が得られます。 –

+0

ビルドサーバーを確認しましたが、続行しています – user3364161

答えて

0

$ErrorActionPreferenceが間違っているため、tryブロックが無視されました。それを「Continue」から「Stop」に変更することで修正されました。

関連する問題