1

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

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")

我收到以下错误:

检索成员“add”时发生以下异常:
找不到组名。

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

4

1 回答 1

3

问题在这里

-GroupName:"Comserver Consumer", -Userarr

逗号是用于 powershell 的数组的分隔符。

您遇到的问题是,您将参数分隔为逗号,但 PowerShell 将其设为空格。

查看此问题以获取更多信息: 如何将多个参数传递给 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

请尝试一下

于 2013-05-06T11:35:10.667 回答