【问题标题】:Powershell try block not working on VSTS buildPowershell 尝试块不适用于 VSTS 构建
【发布时间】: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的值。如果不是Stopcatch 将不会运行。让我们知道这是否是问题所在,我会写一个更完整的答案。对于某些 cmdlet,还有另一种情况,如果没有更极端的步骤,它们不会 catch。显式添加参数-ErrorAction Stop 将在逐个命令的基础上实现所需的结果。
  • 我检查了构建服务器,它继续

标签: powershell azure try-catch


【解决方案1】:

由于错误的$ErrorActionPreference,try 块被忽略。将其从“继续”更改为“停止”修复它。

【讨论】:

    猜你喜欢
    • 2017-12-06
    • 1970-01-01
    • 1970-01-01
    • 2012-03-26
    • 2018-09-24
    • 1970-01-01
    • 1970-01-01
    • 2018-05-24
    • 1970-01-01
    相关资源
    最近更新 更多