2017-09-05 2 views
1

J'utilise une commande dans Powershell via VSTS pour affecter Azure. La commande fonctionne, mais elle donne une erreur après. Les paramètres et la connexion fonctionnent comme en témoigne le fait que le groupe obtient l'autorisation de la commande. Je pense qu'une solution de contournement consiste à placer la commande dans un bloc try, à l'exécuter, et lorsque l'erreur survient, aller au bloc catch et terminer sans lancer l'erreur.Powershell try bloc ne fonctionne pas sur VSTS build

Lorsque j'exécute ce script, j'obtiens toujours la même erreur, comme le bloc try est ignoré. Est-ce que j'ai la syntaxe erronée?

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

Edit: j'ajouté $ErrorActionPreference = "Stop" avant que le bloc try et il a attrapé l'erreur correctement.

+2

Vérifiez la valeur de '$ ErrorActionPreference'. Si ce n'est pas 'Stop', le' catch' ne fonctionnera pas. Faites-nous savoir si c'est le problème et je rédigerai une réponse plus complète. Il y a un autre cas pour certaines applets de commande qui ne «attraperont» pas sans étapes plus extrêmes. L'ajout explicite de l'argument '-ErrorAction Stop' obtiendra le résultat désiré sur une base de commande par commande. –

+0

J'ai vérifié sur le serveur de construction, ça continue – user3364161

Répondre

0

Le bloc try a été ignoré en raison du mauvais $ErrorActionPreference. Le passage de "Continuer" à "Stop" l'a corrigé.