2017-09-05 59 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块被忽略。将其从“继续”更改为“停止”修复它。