我正在通过VSTS在Powershell中运行一个命令来操作Azure。命令有效,但是随后出现了错误。由于该命令能够给组授予权限,因此可以证明参数和连接都有效。我想到的一种解决方法是将该命令放入try块中运行,当错误出现时进入catch块并结束而不抛出错误。
当我运行这个脚本时,我仍然得到同样的错误,好像try块被忽略了一样。我语法写错了吗?
Try
{
New-AzureRmRoleAssignment -ObjectId "xxxx" -RoleDefinitionName $roleName -ResourceGroupName pentest-$featureName
}
Catch
{
Write-Output "Whoops"
}
编辑:我在try块之前添加了$ErrorActionPreference = "Stop"
,这样可以正确捕获错误。
$ErrorActionPreference
的值。如果它不是Stop
,catch
就不会运行。如果这是问题,请告诉我们,我会写一个更完整的答案。对于一些 cmdlets,有另一种情况无法使用catch
,需要采取更极端的步骤。在命令中显式地添加参数-ErrorAction Stop
可以实现按命令进行所需的结果。 - Matthew Wetmore