在PowerShell中
Write-Verbose
当命令以详细模式运行时,该-Verbose
标志用于提供详细信息。我正在远程运行一些脚本,并希望捕获详细的输出输出。但是,Invoke-Command
似乎没有捕获详细的通道。
PS:> Invoke-Command -ComputerName MY-COMPUTERNAME -Verbose { Write-Verbose "blah" }
PS:>
运行远程脚本时如何捕获详细输出?
在PowerShell中
Write-Verbose
当命令以详细模式运行时,该-Verbose
标志用于提供详细信息。我正在远程运行一些脚本,并希望捕获详细的输出输出。但是,Invoke-Command
似乎没有捕获详细的通道。
PS:> Invoke-Command -ComputerName MY-COMPUTERNAME -Verbose { Write-Verbose "blah" }
PS:>
运行远程脚本时如何捕获详细输出?
我认为您可以做的最好的事情是创建一个具有 [CmdletBinding()] 的函数,因此它支持 -verbose 开关。然后,您将能够使用本地 $VerbosePreference 捕获本地函数的详细状态,并将其传递给调用命令。这仅适用于 Powershell 3.0 及更高版本,因为您需要使用 $Using 范围修饰符。
Function write-blah{
[CmdletBinding()]
Param()
Invoke-Command -ComputerName MY-COMPUTERNAME {$VerbosePreference=$Using:VerbosePreference; Write-Verbose "blah" }
}
然后你会这样调用你的函数。
Write-Blah -verbose
在测试中,这对我有用。我相信您的函数必须支持参数,因此是空的 Param() 块。
试试这种方式:
Invoke-Command -ComputerName MY-COMPUTERNAME {$VerbosePreference='Continue'; Write-Verbose "blah" }
Invoke-Command -ComputerName MY-COMPUTERNAME { Write-Verbose "blah" -Verbose }