VSTS构建中Powershell的try块无法正常工作

3
我正在通过VSTS在Powershell中运行一个命令来操作Azure。命令有效,但是随后出现了错误。由于该命令能够给组授予权限,因此可以证明参数和连接都有效。我想到的一种解决方法是将该命令放入try块中运行,当错误出现时进入catch块并结束而不抛出错误。

当我运行这个脚本时,我仍然得到同样的错误,好像try块被忽略了一样。我语法写错了吗?
Try
{
    New-AzureRmRoleAssignment -ObjectId "xxxx" -RoleDefinitionName $roleName -ResourceGroupName pentest-$featureName
}
Catch 
{
    Write-Output "Whoops"
}

编辑:我在try块之前添加了$ErrorActionPreference = "Stop",这样可以正确捕获错误。


3
检查 $ErrorActionPreference 的值。如果它不是 Stopcatch 就不会运行。如果这是问题,请告诉我们,我会写一个更完整的答案。对于一些 cmdlets,有另一种情况无法使用 catch,需要采取更极端的步骤。在命令中显式地添加参数 -ErrorAction Stop 可以实现按命令进行所需的结果。 - Matthew Wetmore
我在构建服务器上检查了一下,它正在继续。 - user3364161
1个回答

0

由于错误的 $ErrorActionPreference,try 块被忽略了。将其从“Continue”更改为“Stop”可解决该问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接