【问题标题】:Powershell script completes but exits with error code 1Powershell 脚本完成但退出并显示错误代码 1
【发布时间】:2022-01-15 02:50:34
【问题描述】:
$myValue= (.\command.exe arguments | select -first 1)

我在 Azure Devops 管道中运行上述代码, $myValue 包含我期望的值,但我得到了:

##[error]PowerShell exited with code '1'.

我的任务完成后返回...有谁知道为什么?我不知道这是语法问题,还是我的command.exe 做了一些奇怪的事情来影响退出代码。

【问题讨论】:

  • 您确定.\command.exe arguments 不会导致错误吗?将其移至 try{ ... } catch { Write-Error $_ } 块,看看会发生什么
  • 我没有看到你在你的 sn-p 的任何地方做exit 0
  • @Moerwald powershell 的异常处理异常对于外部可执行文件很时髦。那什么都做不了。
  • 你能把整个剧本分享给你吗?
  • 谢谢 - 所有有用的 cmets。抱歉,我无法分享完整的代码,但感谢您在信息有限的情况下提供有用的反馈 - 我尝试了 try catch 循环并且我的 .exe 运行良好

标签: powershell azure-devops


【解决方案1】:

没有看到整个脚本,我猜这是由于带有 Powershell 的known issueSelect -First 即使成功也会填充 ErrorVariable。这段代码可以重现:

PS > 1..2 | Select -First 2 -ErrorVariable X; $X | select *
 1
 2

RequestingCommandProcessor : Select-Object
 Message : System error.
 Data : {}
 InnerException :
 TargetSite : Void ProcessRecord()
 StackTrace : at Microsoft.PowerShell.Commands.SelectObjectCommand.ProcessRecord()
 at System.Management.Automation.CommandProcessor.ProcessRecord()
 HelpLink :
 Source : Microsoft.PowerShell.Commands.Utility
 HResult : -2146233087

您可以忽略 $Error.HResult -eq -2146233087 的任何错误作为解决方法。

【讨论】:

【解决方案2】:

将它放在我的脚本末尾可以防止错误消息:

退出 0

感谢 Maximilian Burszley 在 cmets 中的评论

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-21
    • 2015-08-01
    • 1970-01-01
    • 2020-11-11
    相关资源
    最近更新 更多