如何从Invoke-Command写入详细信息?

时间:2013-04-24 16:11:05

标签: powershell powershell-remoting

在powershell中

Write-Verbose-Verbose标志用于在详细模式下运行命令时提供详细信息。我正在远程运行一些脚本,并希望捕获详细的输出输出。但是,Invoke-Command似乎无法捕获详细信道。

PS:> Invoke-Command -ComputerName MY-COMPUTERNAME -Verbose { Write-Verbose "blah" }
PS:>

如何在运行远程脚本时捕获详细输出?

3 个答案:

答案 0 :(得分:17)

我认为你能做的最好的事情是创建一个具有[CmdletBinding()]的函数,因此它支持-verbose开关。然后,您将能够使用本地$ VerbosePreference捕获本地函数的详细状态,并在invoke命令中传递它。这只适用于Powershell 3.0及更高版本,因为您需要使用$ Using scope修饰符。

Function write-blah{
[CmdletBinding()]
Param()
Invoke-Command -ComputerName MY-COMPUTERNAME  {$VerbosePreference=$Using:VerbosePreference; Write-Verbose "blah" }
}

然后你会像这样调用你的函数。

Write-Blah -verbose

在测试中,这对我有用。我相信你的函数必须支持参数,因此空的Param()块。

答案 1 :(得分:11)

以这种方式尝试:

Invoke-Command -ComputerName MY-COMPUTERNAME  {$VerbosePreference='Continue'; Write-Verbose "blah" }

答案 2 :(得分:0)

Invoke-Command -ComputerName MY-COMPUTERNAME { Write-Verbose "blah" -Verbose }