我一直在寻找一种方法来填充多个用户名的多个通讯组。我遇到了a script on this site written by member Frode F.:
Import-Csv "C:\Scripts\Import Bulk Users into bulk groups\bulkgroups3.csv" | Group-Object Group | % {
#Foreach Group, get ADUser object for users and add members
$users = $_.Group | % { Get-ADUser $_.Accountname }
Add-ADGroupMember -Identity $_.Name -Member $users
}
当csv文件包含大约10行,第1列中有2个不同的组,第2列中有多个用户时,这是有效的。 当csv包含几百行时,仍然只有两个组,它根本无法填充这些组。这些是错误:
Add-ADGroupMember : The specified account name is already a member of the group
At C:\scripts\AddUsersDistributionGroups.ps1:6 char:22
+ Add-ADGroupMember <<<< -Identity $_.Name -Member $users
+ CategoryInfo : NotSpecified: (Group A:ADGroup) [Add-ADGroupMember], ADException
+ FullyQualifiedErrorId : The specified account name is already a member of the group,Microsoft.ActiveDirectory.Management.Commands.AddADGroupMember
Add-ADGroupMember : The specified account name is already a member of the group
At C:\scripts\AddUsersDistributionGroups.ps1:6 char:22
+ Add-ADGroupMember <<<< -Identity $_.Name -Member $users
+ CategoryInfo : NotSpecified: (Group B:ADGroup) [Add-ADGroupMember], ADException
+ FullyQualifiedErrorId : The specified account name is already a member of the group,Microsoft.ActiveDirectory.Management.Commands.AddADGroupMember
有人可以帮忙吗?
答案 0 :(得分:0)
或许 Add-ADGroupMember 可以同时处理多少成员,并且如果您将 -Members 参数传递给数百个集合,它就会出现问题?不要将所有用户分组到集合中,而是尝试一次添加一个:
Import-Csv "C:\Scripts\Import Bulk Users into bulk groups\bulkgroups3.csv" | %{
Add-ADGroupMember -Identity $_.Group -Members $_.Accountname
}
这假定群组和帐户名列中的值是有效的身份属性 - 他们必须按照您引用的脚本的顺序。但请注意,此脚本需要很长时间才能运行,因为AD cmdlet通常运行缓慢,并且您将每个用户执行一次 Add-ADGroupMember (即CSV中的每行)文件)而不是每组一次。您可能会发现在 Foreach-Object 块中添加一行指示进度非常有用,这样您就知道它正在工作而不是卡住。
答案 1 :(得分:0)
我遇到了同样的问题,通过Add-ADGroupMember添加多个成员,我想我找到了解决方案。以为我会为后人分享。
它与可以处理的成员数量的限制无关...... cmdlet可以处理数千个。
问题是通过-MEMBERS参数传递的成员列表不能有重复项。如果该列表中有重复项,则我们会收到上述错误。
决议?要么传递干净的数据而不使用dupe,要么使用foreach参数一次传递一个成员。