是否可以在 Powershell 中捕获 cmd.exe 输出格式(也许还有颜色)?

是否可以在 Powershell 中捕获 cmd.exe 输出格式(也许还有颜色)?

如果我ng build -environment=localprod --base-href /Angular5Starter/在命令提示符下运行,我会收到以下输出:

命令提示符输出

但是,如果我从 Powershell 运行相同的命令:

$ngBuildCommand = "ng build -environment=$($environment) --base-href /$($webSiteName)/"
Write-Host "Ng build command: ", $ngBuildCommand
cmd /c $ngBuildCommand

我收到了一个相当混乱的输出:

Powershell 输出


我按照评论的建议正确运行了命令:

$ngExe = "C:\Program Files\nodejs\ng.cmd"
& $ngExe build -environment="$environment" --base-href /$webSiteName/

但是输出的文本格式是相同的。

问题:是否可以在 Powershell 中捕获 cmd.exe 输出格式(也许还有颜色)?

答案1

我意识到我的帖子是XY问题。我真正想要的是可读的输出,而不是彩色的输出。

我已经尝试过的Biswapriyo解决方案,除了两件事之外,效果很好:

  • 颜色发生了变化(没什么大不了的)
  • 缺少一些字符串(靠近 { })

解决问题的方法似乎是从 angular-cli 的输出中去除颜色,如下所示这里

$ngExe = "C:\Program Files\nodejs\ng.cmd" 
$executionRes = & $ngExe build -environment="$environment" --base-href /$webSiteName/ | %{$_ -replace "\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[mGK]"," "} | %{$_ -replace "     ", "`n"}
Write-Host $executionRes

这将去除所有颜色并保持原始文本完整,除了这里和那里的一些额外的空白。

相关内容