我正在尝试捕获路由更改命令的输出。
$StrTemp = route change 0.0.0.0 mask 0.0.0.0 $Gateway metric 10 if $i
如果接口不存在,则输出不会被捕获到$ StrTemp中。如果命令成功则捕获。放置| Out-Null命令也不会改变任何东西。命令中的任何错误仍会打印在屏幕上。有人发现过这个吗?
答案 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