当我执行调用命令时,我试图捕获警告流的内容,但似乎无法获取它 - 我所做的一切,警告都会传递到控制台而不是我的变量中。
这是开始的基本片段:
Invoke-Command -ComputerName $remoteServer {
Write-Warning 'Test'
}
正如预期的那样,这产生了
WARNING: Test
但后来我尝试拦截,但没有任何作用:
$output = Invoke-Command -ComputerName $remoteServer {
Write-Warning 'Test'
} 3>&1
不,
WARNING: Test
被发送到控制台,并且
$output
为空。
$warnings = $null
$output = Invoke-Command -ComputerName $remoteServer {
Write-Warning 'Test'
} -WarningVariable $warnings
WARNING: Test
被发送到控制台,并且
$warnings
为空。
即使
WarningAction = 'SilentlyContinue'
也无法阻止这一点。
Invoke-Command -ComputerName $remoteServer {
Write-Warning 'Test'
} -WarningAction SilentlyContinue
有没有办法在调用命令中进行正确的警告流传递?
您需要在远程端点上重定向,因为它发出警告,而不是
Invoke-Command
$output = Invoke-Command -ComputerName $remoteServer {
Write-Warning 'Test' 3>&1
}
$output