【发布时间】:2014-03-19 19:13:50
【问题描述】:
是否有将控制台输出重定向到变量(不是文件)的 powershell cmdlet?
我需要将变量的内容传递到二进制文件的命令行中,并将二进制文件的控制台响应收集到另一个变量中,但不知道如何。
例如,Perforce 的 p4.exe 在失败时返回 OK 状态并带有文本错误消息
$MyP4Client | p4 client -i
要中止错误,我需要对其进行 try/catch,然后收集并检查 p4 的控制台输出。 当不涉及输入重定向时,我可以这样做将 p4 的控制台输出转换为变量:
Try {
$P4response = & 'p4' sync -f //depot/myfiles/... 2>&1
}
Catch {
ExitWithCode 1 # abort
}
if( $P4response -match "blah" ) {
# act on p4 response text
但是我在找到一种方法将 $MyP4Client 变量输入到 p4 二进制文件然后从 p4 获取输出时失败了。在许多其他尝试中,这些都没有将 p4 的输出转换为 $P4response :
$P4response = $p4ClientSpec | & 'p4' client -i
$P4response = ( $p4ClientSpec | p4 client -i )
$P4response = { $p4ClientSpec | & 'p4' client -i }
$p4ClientSpec | & 'p4' "client -i" | $P4response
最后一个得到解析器错误($P4response 是一个表达式)。很明显我错过了一些东西!请问有什么办法? 谢谢
【问题讨论】:
标签: powershell redirect