将用户添加到本地用户组

时间:2013-05-06 11:04:56

标签: powershell powershell-v2.0

我正在使用以下功能将用户添加到本地用户组。我需要将一组用户添加到我的计算机上的本地组。

function AddUsersToGroup([string]$MachineName,[string]$GroupName,[String[]]$Userarr)
{
    write-host 'write: $Userarr'
    Foreach($s in $Userarr)
    {
        write-host $s
    }
    $objOU = [ADSI]"WinNT://$MachineName/$GroupName,group"  
    Foreach($User in $Userarr)
    {
        $objOU.add("WinNT://$MachineName/$User,user")
    }  
} 

$UserArray=@("Administrator", "NETWORK SERVICE", "LOCAL SERVICE","SYSTEM")
AddUsersToGroup -MachineName:"localhost" -GroupName:"Comserver Consumer",-Userarr:@("Administrator", "NETWORK SERVICE", "LOCAL SERVICE","SYSTEM")
AddUsersToGroup -MachineName:"localhost" -GroupName:"Comserver Consumer",-Userarr:@("Administrator", "NETWORK SERVICE", "LOCAL SERVICE","SYSTEM")

我收到以下错误:

  

检索成员时出现以下异常"添加":
  找不到组名。

我是PowerShell的新手。请帮助:)

1 个答案:

答案 0 :(得分:3)

问题在这里

-GroupName:"Comserver Consumer", -Userarr

逗号是powershell数组的分隔符。

你遇到的问题是,你用逗号分隔参数,但PowerShell会使它占用哪个空格。

查看此问题以获取更多信息: How do I pass multiple parameters into a function in PowerShell?

/更新

这是代码

function AddUsersToGroup([string]$MachineName,[string]$GroupName,[Array]$Users)
{


    $Group = [ADSI]"WinNT://$MachineName/$GroupName,group"   


    Foreach($User in $Users)
    {
        Write-Host $User
        $Group.Add("WinNT://$User,user")    
    }  
} 


[Array]$UserArray=@("Username", "NETWORK SERVICE", "LOCAL SERVICE","SYSTEM")
AddUsersToGroup -MachineName "localhost" -GroupName "Testgroup" -Users $UserArray

请试一试