2014-09-05 103 views
0

我在遠程服務器上運行以下簡單的powershell命令。不過,我需要一個變量傳遞給NET LOCALGROUP命令:如何將PowerShell參數傳遞給非PowerShell命令?

$serverName = "SCO32" 
$groupName = "SCO33_Local_Admins" 
$Session = New-PSSession -ComputerName $serverName 

Invoke-Command -Session $Session -ScriptBlock { 

$args[1] 
$args[0] 

net localgroup administrators domainname\$args[1] /ADD 

} -ArgumentList $serverName, $groupName 

的參數正確地傳遞的是遠程連接,它只是似乎並不能夠因爲它試圖使用$來執行命令args [1]作爲文字而不是域名\ SCO33_Local_Admins

在此先感謝。

+0

爲什麼不只是使用[此腳本](http://gallery.technet.microsoft.com/scriptcenter/Add-AD- UserGroup-to-Local-fe5e9239#content),它已經完成了你想要做的事情? – TheMadTechnician 2014-09-05 16:13:55

+0

@TheMadTechnician - 感謝您的鏈接,但這是更大的一部分,我想同時學習。謝謝。 – 2014-09-05 16:21:44

+0

我建議使用ADSI。 – 2014-09-05 16:48:41

回答

2
$servername = 'sv1' 

在V2:

Invoke-Command -Session $Session -ScriptBlock { 
    param($servername, $group) 
    net localgroup administrators domainname\$servername /ADD 
} -ArgumentList $serverName, $groupName 

或者在V3

Invoke-Command -Session $Session -ScriptBlock { 
    net localgroup administrators domainname\${using:servername} /ADD 
} 

或者:

Invoke-Command -Session $Session -ScriptBlock { 
    net localgroup administrators domainname\$($args[1]) /ADD 
} -ArgumentList $serverName, $groupName 
+1

感謝v3對我的應用程序非常適用 – 2014-09-05 17:16:14

0

就像在一個函數或者您可以將參數分配到一個腳本一個scriptblock。雖然使用自動$參數可能不適合你,你可以這樣做:

$serverName = "SCO32" 
$groupName = "SCO33_Local_Admins" 
$Session = New-PSSession -ComputerName $serverName 

Invoke-Command -Session $Session -ScriptBlock { 
Param($SrvName,$GrpName) 
net localgroup administrators domainname\$GrpName /ADD 

} -ArgumentList $serverName, $groupName 
相關問題