在 Powershell 5.1 中,如何从远程 Invoke-Command 捕获警告

问题描述 投票:0回答:1

当我执行调用命令时,我试图捕获警告流的内容,但似乎无法获取它 - 我所做的一切,警告都会传递到控制台而不是我的变量中。

这是开始的基本片段:

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

有没有办法在调用命令中进行正确的警告流传递?

powershell powershell-remoting
1个回答
0
投票

您需要在远程端点上重定向,因为它发出警告,而不是

Invoke-Command

$output = Invoke-Command -ComputerName $remoteServer {
    Write-Warning 'Test' 3>&1
}

$output
© www.soinside.com 2019 - 2024. All rights reserved.