Ответ 1
Попробуйте так:
Invoke-Command -ComputerName MY-COMPUTERNAME {$VerbosePreference='Continue'; Write-Verbose "blah" }
В powershell
Write-Verbose
и флаг -Verbose
используются для предоставления подробной информации, когда команды выполняются в подробном режиме. Я запускаю несколько сценариев удаленно и хотел бы захватить подробный выходной вывод. Однако Invoke-Command
, похоже, не захватывает подробный канал.
PS:> Invoke-Command -ComputerName MY-COMPUTERNAME -Verbose { Write-Verbose "blah" }
PS:>
Как я могу получить подробный вывод при запуске удаленных сценариев?
Попробуйте так:
Invoke-Command -ComputerName MY-COMPUTERNAME {$VerbosePreference='Continue'; Write-Verbose "blah" }
Лучше всего, что я могу сделать, это создать функцию, которая имеет [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().