我在远程服务器上运行以下简单的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
提前致谢。
答案 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