如何将powershell参数传递给非powershell命令?

时间:2014-09-05 16:01:22

标签: powershell

我在远程服务器上运行以下简单的powershell命令。但是我需要将变量传递给NET LOCALGROUP命令:

$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

提前致谢。

2 个答案:

答案 0 :(得分:2)

$servername = 'sv1'

在第2节:

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 :(得分:0)

就像在函数或脚本中一样,您可以为scriptblock分配参数。虽然使用自动$ args可能不适合你,你可以这样做:

$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