我有一个包含2列的csv,一列是AD组名,一列是用户帐户名。我正在尝试阅读csv并将用户导入其相应的组。
这是我到目前为止所要做的。它说两个参数(identity,member)都是null,这是没有意义的,因为标题是正确指定的。
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}
答案 0 :(得分:7)
改变这个:
add-adgroupmember -identity $_.Group -member $_.Accountname
对此:
add-adgroupmember -identity $user.Group -member (Get-ADUser $user.Accountname)
答案 1 :(得分: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 / username):
Group,Accountname
"Mytestgroup","kim_akers"
"Mytestgroup","user1"
EDIT2 更深层次的OU不应该有任何问题。我测试了一个7级深的OU,没有问题。如果您拥有一个OU内的所有用户(或找到包含所有子OU的最近的OU),请查看此脚本是否有帮助。请记住在-Searchbase
参数中替换“基本OU”的DN。
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
}