【问题标题】:Add multiple users to multiple groups from one import csv (follow up query)从一个导入 csv 将多个用户添加到多个组(后续查询)
【发布时间】:2014-02-09 04:07:49
【问题描述】:

我正在寻找一种方法来使用多个用户名填充多个通讯组。我遇到了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 包含几百行时,仍然只有 2 个组,它根本无法填充这些组。这些是错误:

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

谁能帮忙?

【问题讨论】:

  • 您能否提供指向您所指答案的链接?另外,我相信@username 仅适用于 cmets,不适用于问题和答案。
  • 请注意,您引用的脚本实际上来自 Frode F. 的答案,而不是 EBGreen 的。我添加了您问题的链接并更正了归属。

标签: powershell csv import active-directory bulk


【解决方案1】:

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

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

这假定 GroupAccountname 列中的值是有效的身份属性——它们必须是为了使您引用的脚本工作.但请注意,此脚本将需要很长时间才能运行,因为 AD cmdlet 通常执行缓慢,并且您将为每个用户(即 CSV 中的每行)执行一次 Add-ADGroupMember文件),而不是每组一次。您可能会发现在 Foreach-Object 块中添加一行来指示进度很有用,这样您就知道它正在工作而不是卡住。

【讨论】:

  • 你说得对,一次可以处理的成员数量一定是有限制的。非常感谢您的帮助
  • 嗨,我现在收到任何新组的错误“Get-ADGroupMember:找不到具有身份的对象:”。这些组在 AD 中
  • 在脚本中包含组 OU 的位置是否有帮助?错误“Add-ADGroupMember:在‘DC=domain,DC=local’下找不到标识为‘GroupName’的对象。”声明搜索来自域的顶级。是否有助于扩大搜索范围? 'OU=container,OU=container,DC=domain,DC=local'?
  • 我不这么认为,因为默认情况下它已经搜索了整个目录。当它说under: 'DC=domain,DC=local' 时,它表示从该节点开始的整个子树。听起来 Group 列中的某些值与任何现有组的有效身份属性都不匹配。
  • 组名中的空格数似乎有限制。例如组名“All Staff”有效,“All Staff NSW”无效。除了删除间距还有什么想法吗?
【解决方案2】:

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

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

问题是通过 -MEMBERS 参数传递的成员列表不能有重复项。如果该列表中有重复项,则会出现上述错误。

分辨率?要么传递干净的数据而没有欺骗,要么使用 foreach 参数一次传递一个成员。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-07
    • 2023-02-01
    • 2014-02-11
    • 1970-01-01
    • 1970-01-01
    • 2020-12-29
    相关资源
    最近更新 更多