根据模板用户奇怪行为将用户加入组

时间:2017-05-31 12:59:03

标签: powershell active-directory

我在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 个答案:

答案 0 :(得分:0)

如评论中所述,您可以使用foreach-object使用Add-ADGroupMember循环显示群组名称,但这会导致为用户需要添加到的每个群组调用AD 。使用Add-ADPrincipalGroupMemebership cmdlet可能更有效,它会在一次操作中将用户添加到多个组:

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

答案 1 :(得分:0)

以下代码行确实有效,我猜问题是过滤器无法处理点表示法。 JOIN

这不是我想要的100%,因为我现在搜索netbiosname而不是name属性但是它有效。由于netbiosnames的20个字符限制,我必须创建一个子字符串,以使其适用于我的所有部门。