2016-10-04 56 views
1

我試圖編寫一個單行程來遠程利用netbackup的一些功能。我知道如何通過重複參數在最後使用-args [0]和[1]將參數傳遞給Invoke Command。什麼我試圖完成一個例子:Powershell - 將多個參數傳遞給Invoke-Command

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 

回答

1

使用參數($ VAL1,...)在scriptblock內傳遞參數。

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

的更多信息和句法可以在參數列表(別名Args)來部分中找到用於Invoke-Command小命令。

0

您可能會遇到擴展變量的問題,因此可能會出現參數未正確傳遞,當我正在調試時,我只需使用編寫來測試輸出。例如:

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"