Powershell — передать несколько параметров в Invoke-Command

Я пытаюсь написать одну строчку, чтобы использовать некоторые возможности netbackup удаленно. Я знаю, как передать параметры в Invoke Command, используя -args[0] и [1] в конце с повторяющимися параметрами. Пример того, что я пытаюсь выполнить:

CC = код страны (будет повторяться из-за соглашений об именах)

SS = сайт (также повторяется из-за соглашения об именах)

Invoke-Command -ComputerName RemoteServer -ScriptBlock {& "C:\Program Files\Veritas\NetBackup\bin\admincmd\bpplinfo.exe" CC0SITE_VMW_BRON -set -L -M CC0SITEb0100d0a.s0SITE.CC.DOMAIN.COM} 

После получения пользовательского ввода и объявления параметров он, похоже, не переходит к команде вызова

Invoke-Command -ComputerName RemoteServer -ScriptBlock {& "C:\Program Files\Veritas\NetBackup\bin\admincmd\bpplinfo.exe" $args[0]0$args[1]_VMW_BRON -L -M $args[0]0$args[1]b0100d0a.s0$args[1].$args[0].DOMAIN.com} -Args $CCode, $Site

person itsmrmarlboroman2u    schedule 04.10.2016    source источник


Ответы (2)


Используйте param($val1,...) внутри блока сценария для передачи аргументов.

Invoke-Command -ComputerName 'SERVERNAME' -ScriptBlock {
param($argument1, $argument2) #<--- this is required!
 write-host $CCode
 write-host $Site
} -ArgumentList ($argument1, $argument2)

Дополнительную информацию и синтаксис можно найти в разделе ArgumentList (псевдоним Args) для Invoke-Command командлет.

person Dieter Gobeyn    schedule 04.10.2016

У вас может возникнуть проблема с тем, как вы расширяете свои переменные, и, следовательно, может показаться, что аргументы не передаются правильно, когда я отлаживаю, я просто использую write для проверки вывода. Например:

Invoke-Command -ComputerName localhost -ScriptBlock {write "C:\Program Files\Veritas\NetBackup\bin\admincmd\bpplinfo.exe CC0SITE_VMW_BRON -set -L -M CC0SITEb0100d0a.s0SITE.CC.DOMAIN.com"}
Invoke-Command -ComputerName localhost -ScriptBlock {write "C:\Program Files\Veritas\NetBackup\bin\admincmd\bpplinfo.exe $($args[0])0$($args[1])_VMW_BRON -set -L -M $($args[0])0$($args[1])b0100d0a.s0$($args[1]).$($args[0]).DOMAIN.com"} -Args "CC", "SITE" 
person jfrmilner    schedule 04.10.2016