2017-05-31 70 views
0

我正在用PowerShell编写一个用于创建用户的脚本。此脚本将用户添加到基于具有部门名称的模板用户的组中。当在我的脚本中使用像这样:根据模板用户的奇怪行为加入用户组

Get-ADUser -Filter {name -eq "Temp$($Department.LookupValue)"} -Properties memberof | 
    Select-Object -ExpandProperty memberof | 
    Add-ADGroupMember -Members $sAMAccountName 

这不幸的是不工作,也没有给出任何错误。

然而,当我运行的代码只是行只是正常

Get-ADUser -Filter {name -eq "TempICT"} -Properties memberof | 
    Select-Object -ExpandProperty memberof | 
    Add-ADGroupMember -Members usern 
+2

尝试'| | foreach {add-adgroupmember ...}'而不是普通管道到'add-adgroupmember'。据我了解,你只收到一个以上的团体身份,你需要给所有的人添加'$ samaccountname'。 – Vesper

+0

@Vesper您应该添加您的评论作为答案。 – BenH

回答

0

正如在评论中指出,可以通过组名循环使用Add-ADGroupMemberforeach-object,但是这将导致针对用户需要添加到的每个组的AD调用。它可能是更有效地使用Add-ADPrincipalGroupMemebership cmdlet,后者将在一个操作的用户添加到多个组:

$Groups = Get-ADUser -Filter {name -eq "TempICT"} -Properties memberof | 
    Select-Object -ExpandProperty memberof 
Add-ADPrincipalGroupMembership -Identity $sAMAccountname -MemberOf $Groups 
0

下面的代码行做的工作,我想这个问题是有没有能够过滤器处理点符号。 Get-ADUser "Temp$departmentsn" -Properties memberof | Select-Object -ExpandProperty memberof | Add-ADGroupMember -Members $gebruiker

这不是100%我想要它,因为我现在搜索netbiosname而不是名称属性,但它的工作原理。由于netbiosname的20个字符限制,我必须创建一个子字符串才能使其适用于我的所有部门。