powershell - 存储有错误的命令输出
问题描述
我想存储这个命令的输出
git checkout master
该命令的输出有两种状态。
成功 - 命令输出:
切换到分支'X'
失败 - 命令输出
您对以下文件的本地更改将被 checkout <list files> 覆盖:请在切换分支之前提交您的更改或存储它们。中止
我想存储输出并通过检查字符串 abort 来检查它是否成功。
这是我尝试过的。
$output = git checkout master 2>&1
if ($output.Contains("Aborting")) {
Write-Host $output -BackgroundColor Red
} else {
Write-Host $output
}
但$output
在第二种状态下会产生类似的结果:
该命令似乎已完成,但语法错误。我该如何解决?我想输出
解决方案
确保您的命令的 stderr 输出转换为常规字符串:
$output = [string[]] (git checkout master 2>&1)
如果没有[string[]]
强制转换,stderr 输出行将$output
作为[System.Management.Automation.ErrorRecord]
实例存储,并且稍后输出这些实例会有些误导性地打印它们,就好像它们是 PowerShell 错误一样。
(请注意,PowerShell Core不再表现出这种行为:虽然 stderr 行仍被捕获为[System.Management.Automation.ErrorRecord]
实例,但它们现在打印为常规字符串。)
推荐阅读
- git - 如何使用 gitolite 和 TortoiseGit
- php - 在同一控制器laravel 5.6中的方法之间传递变量数据
- php - 如何使用codeigniter更改url中的函数名?
- python - 在python中返回一个函数和不返回有什么区别?
- jquery - 按钮组中的下拉菜单调整表格行的大小问题
- cordova - 如何使用 ionic 3 在设备库中显示下载图像?
- php - PHP 未定义变量:Controller 中的模板
- javascript - HTML5 验证错误消息
- generics - 我可以检查变量是 T 型吗?
- python - 无法获得伊朗的 Twitter 趋势