如果我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
我收到了一个相当混乱的输出:
我按照评论的建议正确运行了命令:
$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
这将去除所有颜色并保持原始文本完整,除了这里和那里的一些额外的空白。