4

我有一个包含 2 列的 csv,一列是 AD 组名称,一列是用户帐户名称。我正在尝试读取 csv 并将用户导入到相应的组中。

到目前为止,这是我必须要做的。它说两个参数(身份,成员)都是空的,这是没有意义的,因为标题是正确指定的。

import-module activedirectory
$list = import-csv "C:\Scripts\Import Bulk Users into bulk groups\bulkgroups3.csv"

Foreach($user in $list){       
    add-adgroupmember -identity $_.Group -member $_.Accountname
}

这是 csv 文件中的内容

Group             Accountname 
group1            user1 
group1            user2 
group1            user3 
group2            user4 
group2            user5 
group3            user6 
group3            user7 
group3            user8 
group4            user9 
group5            user10 

编辑命令和错误

这是我的脚本,我收到的错误和 csv。

Import-Csv "C:\Scripts\Import Bulk Users into bulk groups\bulkgroups.csv" | 
ForEach { get-aduser $_.Accountname | add-adgroupmember $_.Group}

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

4

2 回答 2

7

改变这个:

add-adgroupmember -identity $_.Group -member $_.Accountname

对此:

add-adgroupmember -identity $user.Group -member (Get-ADUser $user.Accountname)
于 2013-05-20T14:27:17.060 回答
2

@EBGreen 已经回答了您的代码有什么问题。只是在这里想出一个替代方案。您可以尝试同时添加组的所有成员,而不是为每个成员运行一次命令。该Member参数支持数组,所以试试这个:

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
}

编辑我已经在 2012 DC 上成功测试了这个,在 test.csv 中有以下内容(值代表现有的组名和现有的 samaccountname/用户名):

Group,Accountname
"Mytestgroup","kim_akers"
"Mytestgroup","user1"

EDIT2更深层次的 OU 应该没有任何问题。我用一个 7 层深的 OU 进行了测试,它没有问题。如果您在一个 OU 中拥有所有用户(或找到包含所有子 OU 的最近 OU),请查看此脚本是否有帮助。请记住在-Searchbase参数中将 DN 替换为“base OU”。

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 -Searchbase "OU=mybaseou,OU=test,OU=users,OU=contoso,DC=Contoso,DC=com" -Filter { samaccountname -eq $_.Accountname } }
    Add-ADGroupMember -Identity $_.Name -Member $users
}
于 2013-05-20T14:48:37.403 回答