PowerShell将输出重定向到写入主机并返回退出代码



我需要在PowerShell脚本中执行以下操作:

  • 调用此命令:npm run build
  • npm run build命令的退出代码从我的脚本返回到父(调用方(脚本
  • 打印命令npm run build的文本输出,但避免从脚本中返回文本

到目前为止,我尝试过:

@Null = @(npm run build)
return $?

这会完全隐藏的输出

Write-Host @(npm run build)
return $?

这将打印没有新行的输出。此外,这会在npm run build之后同时打印输出,而不是逐渐打印

我有PowerShell版本7

  • 管道到Write-Host,或者,因为它在更广泛的场景中工作,所以管道到Out-Host,以确保流式处理(在接收时报告输出。

    • 对于外部程序(其输出PowerShell仅解释为文本(,Write-HostOut-Host的行为与管道输入相同;然而,对于PowerShell本机命令的输出,只有Out-Host应用默认情况下在控制台中看到的常见的、丰富的输出格式,而Write-Host执行简单且通常毫无帮助的.ToString()格式
  • 使用自动$LASTEXITCODE变量获取最近执行的外部程序的退出代码。

    • 相比之下,自动$?变量是一个抽象成功指示符,返回$true$false,在外部程序调用的情况下,它将退出代码0映射到$true,并将任何非零退出代码映射到$false。但是,在Windows PowerShell中,如果涉及2>重定向,则可能会出现错误的$false值-请参阅此答案
npm run build | Out-Host
return $LASTEXITCODE

最新更新