Powershell 从一个导入csv向多个组添加多个用户(后续查询)

Powershell 从一个导入csv向多个组添加多个用户(后续查询),powershell,csv,import,active-directory,bulk,Powershell,Csv,Import,Active Directory,Bulk,我在寻找一种用多个用户名填充多个通讯组的方法。我发现: 当csv文件在第1列中包含大约10行,其中包含2个不同的组,在第2列中包含多个用户时,这就起作用了。 当csv包含几百行时,仍然只有两个组,它根本无法填充这些组。以下是错误: Add-ADGroupMember : The specified account name is already a member of the group At C:\scripts\AddUsersDistributionGroups.ps1:6 char:22

我在寻找一种用多个用户名填充多个通讯组的方法。我发现:

当csv文件在第1列中包含大约10行,其中包含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

有人能帮忙吗?

也许ADGroupMember一次可以处理的成员数量是有限制的,如果您将-members参数传递给数百个成员的集合,它就会发出嘎嘎声?不要将所有用户分组到一个集合中,而是尝试一次添加一个用户:

Import-Csv "C:\Scripts\Import Bulk Users into bulk groups\bulkgroups3.csv" | %{
    Add-ADGroupMember -Identity $_.Group -Members $_.Accountname
}

这假设Group和Accountname列中的值是有效的标识属性,它们必须是有效的标识属性,才能使引用的脚本正常工作。但是请注意,此脚本将需要很长时间才能运行,因为AD cmdlet通常执行速度较慢,并且您将为每个用户(即CSV文件中的每行)执行一次Add-ADGroupMember,而不是为每个组执行一次。您可能会发现,在Foreach对象块中添加一行表示进度的行非常有用,这样您就可以知道它正在工作,而不是陷入困境。

通过add-ADGroupMember添加多个成员时,我遇到了相同的问题,我想我找到了解决方案。我想我会为后代分享它

它与可处理的成员数限制无关……cmdlet可以处理数千个成员

问题是通过-members参数传递的成员列表不能有重复项。如果该列表中存在重复项,则我们会得到上面的错误


决议案?可以不重复地传递干净的数据,也可以使用foreach参数一次传递一个成员。

能否提供指向所指答案的链接?另外,我相信@username只在评论中起作用,而不是在问答中起作用。请注意,您引用的脚本实际上是Frode F.的答案,而不是EBGreen的。我在你的问题上添加了链接并更正了归因。你的钱是对的,必须限制一次可以处理多少会员。非常感谢您的帮助嗨,我现在收到错误Get-ADGroupMember:找不到任何新组的标识为的对象。这些组位于ADO中,在脚本中包含组OU的位置是否有帮助?添加ADGroupMember时出错:在“DC=domain,DC=local”下找不到标识为“GroupName”的对象。声明搜索来自域的顶级。它是否有助于扩展搜索,例如“OU=container,OU=container,DC=domain,DC=local”?我不这么认为,因为默认情况下它已经搜索了整个目录。当它在“DC=domain,DC=local”下显示时,它表示从该节点开始的整个子树。“组”列中的某些值似乎与任何现有组的有效标识属性不匹配。组名中的空格数量似乎有限制。e、 g.集团名称“全体员工”有效,“新南威尔士州全体员工”无效。除了删除间距,还有其他想法吗?
Import-Csv "C:\Scripts\Import Bulk Users into bulk groups\bulkgroups3.csv" | %{
    Add-ADGroupMember -Identity $_.Group -Members $_.Accountname
}