18

在PowerShell中

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

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

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

4

3 回答 3

21

我认为您可以做的最好的事情是创建一个具有 [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() 块。

于 2013-08-07T15:46:05.073 回答
12

试试这种方式:

Invoke-Command -ComputerName MY-COMPUTERNAME  {$VerbosePreference='Continue'; Write-Verbose "blah" }
于 2013-04-24T16:31:04.443 回答
0
Invoke-Command -ComputerName MY-COMPUTERNAME { Write-Verbose "blah" -Verbose }
于 2020-03-27T08:17:30.397 回答