使用Powershell Captureing输出路径更改命令

时间:2018-04-16 07:20:08

标签: powershell

我正在尝试捕获路由更改命令的输出。

$StrTemp = route change 0.0.0.0 mask 0.0.0.0 $Gateway metric 10 if $i

如果接口不存在,则输出不会被捕获到$ StrTemp中。如果命令成功则捕获。放置| Out-Null命令也不会改变任何东西。命令中的任何错误仍会打印在屏幕上。有人发现过这个吗?

1 个答案:

答案 0 :(得分:1)

可能会在失败时输出到stderr,您可以使用stdout重定向运算符将其与>合并:

$routeOut = route change 0.0.0.0 mask 0.0.0.0 $Gateway metric 10 if $i 2>&1
$routeErr = $routeOut.Where({$_ -eq [System.Management.Automation.ErrorRecord]})

或将其包装在表达式中,然后使用ErrorVariable参数捕获它:

$routeOut = Invoke-Expression "route change 0.0.0.0 mask 0.0.0.0 $Gateway metric 10 if $i" -ErrorVariable routeErr