I have a csv with 2 columns, one column is AD group names and one is user account names. I am trying to read the csv and import the users into their corresponding group.
Here is what i have to so far. It's saying both arguments(identity,member) are null, which makes no sense since the headers are correctly specified.
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
}
Heres whats in the csv file
Group Accountname
group1 user1
group1 user2
group1 user3
group2 user4
group2 user5
group3 user6
group3 user7
group3 user8
group4 user9
group5 user10
EDIT Command and error
Here is my script, error i receive and csv.
Import-Csv "C:\Scripts\Import Bulk Users into bulk groups\bulkgroups.csv" |
ForEach { get-aduser $_.Accountname | add-adgroupmember $_.Group}
Change this:
add-adgroupmember -identity $_.Group -member $_.Accountname
To this:
add-adgroupmember -identity $user.Group -member (Get-ADUser $user.Accountname)
@EBGreen has answered what's wrong with your code. Just coming up with an alternative here. Instead of running the command once per member, you can try to add all members of a group at the same time. The Member
parameter supports an array, so try this:
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
}
EDIT I've sucessfully tested this on 2012 DC with following content in test.csv (values represent existing group name and existing samaccountname/username):
Group,Accountname
"Mytestgroup","kim_akers"
"Mytestgroup","user1"
EDIT2 It shouldn't have any problems with deeper level OUs. I tested with an OU that was 7 levels deep and it had no problem. If you have all the user inside one OU (or find the closest OU that contains all the sub-OUs), see if this script helps. Remember to replace DN for "base OU" in -Searchbase
parameter.
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
}