PAW/Create-Group.ps1
2023-11-29 17:01:08 +01:00

41 lines
2.0 KiB
PowerShell

<#
.Example
$csv = Read-Host -Prompt "Please provide full path to Groups csv file"
.\Create-Group.ps1 -CSVfile $csv -Verbose
PS C:\Tools> $csv = Read-Host -Prompt "Please provide full path to Groups csv file"
Please provide full path to Groups csv file: c:\tools\groups.csv
PS C:\Tools> .\Create-Group.ps1 -CSVfile $csv -Verbose
VERBOSE: Creating new Group 'Tier0ReplicationMaintenance' under 'OU=Groups,OU=Tier0,OU=Admin,DC=azureblog,DC=pl'
VERBOSE: Creating new Group 'Tier1ServerMaintenance' under 'OU=Groups,OU=Tier1,OU=Admin,DC=azureblog,DC=pl'
VERBOSE: Creating new Group 'ServiceDeskOperators' under 'OU=Groups,OU=Tier2,OU=Admin,DC=azureblog,DC=pl'
VERBOSE: Creating new Group 'WorkstationMaintenance' under 'OU=Groups,OU=Tier2,OU=Admin,DC=azureblog,DC=pl'
VERBOSE: Group 'tier1admins'already exists.
VERBOSE: Group 'tier2admins'already exists.
#>
[CmdletBinding()]
param(
[string] $CSVfile
)
$dNC = (Get-ADRootDSE).defaultNamingContext
$groups = Import-Csv $CSVfile
foreach ($group in $groups) {
$groupName = $group.Name
$groupOUPrefix = $group.OU
$destOU = $group.OU + "," + $dNC
$groupDN = "CN=" + $groupName + "," + $destOU
$checkForGroup = Get-ADGroup -filter 'Name -eq $groupName' -ErrorAction SilentlyContinue
If ($checkForGroup.count -eq 0 ) {
Write-Verbose "Creating new Group '$($Group.samAccountName)' under '$destOU'"
New-ADGroup -Name $Group.Name -SamAccountName $Group.samAccountName -GroupCategory $Group.GroupCategory -GroupScope $Group.GroupScope -DisplayName $Group.DisplayName -Path $destOU -Description $Group.Description
If ($Group.Membership -ne "") {
Write-Verbose "Adding Group Membership '$($Group.Membership)' for group '$($Group.samAccountName)'"
Add-ADPrincipalGroupMembership -Identity $Group.samAccountName -MemberOf $Group.Membership
}
$error.Clear()
}
Else {
Write-Verbose "Group '$($Group.samAccountName)'already exists."
}
}