我需要在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-Host
和Out-Host
的行为与管道输入相同;然而,对于PowerShell本机命令的输出,只有Out-Host
应用默认情况下在控制台中看到的常见的、丰富的输出格式,而Write-Host
执行简单且通常毫无帮助的.ToString()
格式
- 对于外部程序(其输出PowerShell仅解释为文本(,
-
使用自动
$LASTEXITCODE
变量获取最近执行的外部程序的退出代码。- 相比之下,自动
$?
变量是一个抽象成功指示符,返回$true
或$false
,在外部程序调用的情况下,它将退出代码0
映射到$true
,并将任何非零退出代码映射到$false
。但是,在Windows PowerShell中,如果涉及2>
重定向,则可能会出现错误的$false
值-请参阅此答案
- 相比之下,自动
npm run build | Out-Host
return $LASTEXITCODE