2017-09-05 2 views
1

저는 Powershell에서 VSTS를 통해 Azure에 영향을주는 명령을 실행하고 있습니다. 명령이 작동하지만 이후에 오류가 발생합니다. params와 연결은 그룹이 명령에서 권한을 얻는다는 사실에 의해 입증됩니다. 해결 방법은 try 블록에 명령을 넣고 실행시킨 다음 오류가 발생하면 catch 블록으로 이동하여 오류를 던지지 않고 끝내는 것입니다.Powershell try 블록이 VSTS 빌드에서 작동하지 않습니다.

이 스크립트를 실행할 때 try 블록이 무시되는 것과 같은 오류가 발생합니다. 문법이 잘못 되었습니까?

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

편집 : 나는 시도 블록 전에 $ErrorActionPreference = "Stop"을 추가하고 제대로 오류를 붙 잡았다.

+2

'$ ErrorActionPreference'의 값을 확인하십시오. 'Stop'이 아니라면'catch'가 실행되지 않습니다. 그게 문제인지 알려 주시면보다 완벽한 답변을 작성하겠습니다. 더 많은 극단적 인 단계없이 "catch"하지 않는 일부 cmdlet의 경우가 있습니다. 명시 적으로'-ErrorAction Stop' 인수를 추가하면 명령 단위로 원하는 결과를 얻을 수 있습니다. –

+0

빌드 서버에서 확인한 결과, 계속됩니다. – user3364161

답변

0

잘못된 $ErrorActionPreference 때문에 try 블록이 무시되었습니다. '계속'에서 '중지'로 변경하면 문제가 해결되었습니다.

관련 문제