【发布时间】:2018-02-14 01:10:22
【问题描述】:
我正在通过 VSTS 在 Powershell 中运行命令来影响 Azure。该命令有效,但之后会出错。组从命令获得许可这一事实证明了参数和连接正在工作。我认为一种解决方法是将命令放在 try 块中,让它运行,然后当错误出现时转到 catch 块并结束而不抛出错误。
当我运行这个脚本时,我仍然得到同样的错误,比如 try 块被忽略了。是不是语法错了?
Try
{
New-AzureRmRoleAssignment -ObjectId "xxxx" -RoleDefinitionName $roleName -ResourceGroupName pentest-$featureName
}
Catch
{
Write-Output "Whoops"
}
编辑:我在 try-block 之前添加了$ErrorActionPreference = "Stop",它正确地捕获了错误。
【问题讨论】:
-
检查
$ErrorActionPreference的值。如果不是Stop,catch将不会运行。让我们知道这是否是问题所在,我会写一个更完整的答案。对于某些 cmdlet,还有另一种情况,如果没有更极端的步骤,它们不会catch。显式添加参数-ErrorAction Stop将在逐个命令的基础上实现所需的结果。 -
我检查了构建服务器,它继续
标签: powershell azure try-catch