Как написать-Verbose из Invoke-Command? - программирование
Подтвердить что ты не робот

Как написать-Verbose из Invoke-Command?

В powershell

Write-Verbose и флаг -Verbose используются для предоставления подробной информации, когда команды выполняются в подробном режиме. Я запускаю несколько сценариев удаленно и хотел бы захватить подробный выходной вывод. Однако Invoke-Command, похоже, не захватывает подробный канал.

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

Как я могу получить подробный вывод при запуске удаленных сценариев?

4b9b3361

Ответ 1

Попробуйте так:

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

Ответ 2

Лучше всего, что я могу сделать, это создать функцию, которая имеет [CmdletBinding()], поэтому она поддерживает переключатель -verbose. Затем вы сможете захватить подробное состояние локальной функции с помощью локального $VerbosePreference и передать его в команде invoke. Это будет работать только в Powershell 3.0 и выше, так как вам нужно будет использовать модификатор $Use scope.

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

Затем вы будете называть свою функцию следующим образом.

Write-Blah -verbose

В тестировании это сработало для меня. Я считаю, что ваша функция должна поддерживать параметры, следовательно, пустой блок Param().