Disclaimer
This is my personal blog. The opinions and views I express are my own. The information I provide is on an as-is basis. I make no representations as to accuracy, completeness, currentness, suitability, or validity of any information on this blog and will not be liable for any errors, omissions, or delays in this information or any losses, injuries or damages arising from its use.

Create Active Directory Groups in Bulk from a CSV w/ PowerShell

I have a pretty simple script today. All it does is import your Active Directory group information from the CSV file and create the groups based on the information imported. This is pretty much as simple as it gets but very effective for creating multiple groups in different organizational units.

The format of the CSV file is in the code below. If you have questions leave a comment below or on the Youtube video or with the Social Media links below or you can hunt me down and ask in person as well.

<#
*** THIS SCRIPT IS PROVIDED WITHOUT WARRANTY, USE AT YOUR OWN RISK ***
.DESCRIPTION
    Read Active Directory group info from groups.csv and create the groups.
    
    Example CSV File:
    
    GroupName	 GroupCategory 	 GroupScope	   OU
    Finance	     Security	     Global	       OU=_Groups,DC=signalwarrant,DC=local
    R&D	         Security	     Global	       OU=_Groups,DC=signalwarrant,DC=local
    IT	         Security	     Global	       OU=_Groups,DC=signalwarrant,DC=local
    HR	         Security	     Global	       OU=_Groups,DC=signalwarrant,DC=local
    Executive	 Security	     Global	       OU=_Groups,DC=signalwarrant,DC=local


.NOTES
	File Name: 
	Author: David Hall
	Contact Info: 
		Website: www.signalwarrant.com
		Twitter: @signalwarrant
		Facebook: facebook.com/signalwarrant/
		Google +: plus.google.com/113307879414407675617
		YouTube Subscribe link: https://www.youtube.com/channel/UCgWfCzNeAPmPq_1lRQ64JtQ?sub_confirmation=1
	Requires:  
	Tested: 
.PARAMETER
    None
 
.EXAMPLE
    .\create-groups.ps1
#>

$csv = Import-Csv -Path "c:\scripts\groups.csv"

ForEach ($item In $csv) 
    { 
        $create_group = New-ADGroup -Name $item.GroupName -GroupCategory $item.GroupCategory -groupScope $item.GroupScope -Path $item.OU 
        Write-Host -ForegroundColor Green "Group $($item.GroupName) created!" 
    }

 

4 Comments

  1. Rajiv | | Reply

    New-ADGroup : Cannot validate argument on parameter ‘GroupCategory’. The argument is null. Provide a valid value for
    the argument, and then try running the command again.
    At line:5 char:74
    + $create_group = New-ADGroup -Name $item.GroupName -GroupCategory $item.G …
    + ~~~~~~~
    + CategoryInfo : InvalidData: (:) [New-ADGroup], ParameterBindingValidationException
    + FullyQualifiedErrorId : ParameterArgumentValidationError,Microsoft.ActiveDirectory.Management.Commands.NewADGro
    up

  2. Jason Tarr | | Reply

    I tried your scrip but it has an issue pulling the OU part any ideas. I have everything just as you have it. if I do it where I manually put in the ou after the -path it work, just wont work when pulling the data field for the CSV file

  3. Richard | | Reply

    script can’t read the groupscope field – error “Cannot validate argument on parameter ‘GroupScope’. The argument is null. Supply a non-null argument”

  4. Abs | | Reply

    how do we add an option to Check if the Group already exists?

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.