Add multiple users to multiple groups from one import csv

53,510

Solution 1

Change this:

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

To this:

add-adgroupmember -identity $user.Group -member (Get-ADUser $user.Accountname)

Solution 2

@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
}
Share:
53,510
user2402045
Author by

user2402045

Updated on July 09, 2022

Comments

  • user2402045
    user2402045 almost 2 years

    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}
    

    enter image description here

    enter image description here

    enter image description here