我想存储此命令的输出
git checkout master
此命令的输出有两种状态。
成功-命令输出:
切换到分支“ X”
失败-命令输出
您对以下文件的本地更改将被结帐<列表文件>覆盖:请提交更改或存储它们,然后再切换分支。中止
我想存储输出,并通过检查字符串中止来检查输出是否成功。
这是我尝试过的。
$output = git checkout master 2>&1
if ($output.Contains("Aborting")) {
Write-Host $output -BackgroundColor Red
} else {
Write-Host $output
}
但是在第二种状态下,$output
会产生类似的结果:
该命令似乎已完成,但是语法错误。我该如何解决?我想输出
答案 0 :(得分:3)
确保将命令的stderr输出转换为常规字符串:
$output = [string[]] (git checkout master 2>&1)
在没有[string[]]
强制转换的情况下,stderr输出行将作为$output
实例存储在[System.Management.Automation.ErrorRecord]
中,稍后输出此类实例会误导其输出,就好像它们是PowerShell错误一样。
(请注意,PowerShell Core 不再表现出此行为:尽管stderr行仍作为[System.Management.Automation.ErrorRecord]
实例被捕获,但现在它们 print 作为常规字符串。)