Windows – Powershell:捕获程序stdout和stderr以分隔变量
发布时间:2020-12-13 20:50:03 所属栏目:Windows 来源:网络整理
导读:在一次运行中,是否可以将stdout从外部程序重定向到外部程序中的变量和stderr? 例如: $global:ERRORS = @(); $global:PROGERR = @(); function test(){ # Can we redirect errors to $PROGERR here,leaving stdout for $OUTPUT? $OUTPUT = ( myprogram.exe
在一次运行中,是否可以将stdout从外部程序重定向到外部程序中的变量和stderr?
例如: $global:ERRORS = @(); $global:PROGERR = @(); function test(){ # Can we redirect errors to $PROGERR here,leaving stdout for $OUTPUT? $OUTPUT = (& myprogram.exe 'argv[0]','argv[1]'); if ( $OUTPUT | select-string -Pattern "foo" ) { # do stuff } else { $global:ERRORS += "test(): oh noes! 'foo' missing!"; } } test; if ( @($global:ERRORS).length -gt 0 ) { Write-Host "Script specific error occurred"; foreach ( $err in $global:ERRORS ) { $host.ui.WriteErrorLine("err: $err"); } } else { Write-Host "Script ran fine!"; } if ( @($global:PROGERR).length -gt 0 ) { # do stuff } else { Write-Host "External program ran fine!"; } 一个沉闷的例子,但我想知道是否可能?
最简单的方法是使用stderr输出文件,例如:
$output = & myprogram.exe 'argv[0]','argv[1]' 2>stderr.txt $err = get-content stderr.txt if ($LastExitCode -ne 0) { ... handle error ... } 我还将使用$ LastExitCode来检查本机控制台exes中的错误。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- server-message-block – 如何检查工作站在Windows上使用的
- windows-server-2012-r2 – 驻留在CSV上的VHDX是否支持DFS-
- libevent,windows和.NET编程
- 在Windows系统上移动文件的最快方式
- .net – MSB90错误MSB3086,与TeamCity
- windows-server-2008 – 增加Kerberos票证的MaxTokenSize的
- windows-server-2008 – 这是Windows Server 2008 Web Edit
- azure – 如何将Office 365与Microsoft内部部署多重身份验证
- haskell – windows下没有cabal的代理标志?
- 批处理文件 – 以编程方式更改和刷新图标(无需重新启动)