在powershell中
Write-Verbose
和-Verbose
标志用于在详细模式下运行命令时提供详细信息。我正在远程运行一些脚本,并希望捕获详细的输出输出。但是,Invoke-Command
似乎无法捕获详细信道。
PS:> Invoke-Command -ComputerName MY-COMPUTERNAME -Verbose { Write-Verbose "blah" }
PS:>
如何在运行远程脚本时捕获详细输出?
答案 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 }