scripts/ad_user_groups.ps1 aktualisiert

This commit is contained in:
2024-10-25 08:02:55 +02:00
parent 0646a3e55c
commit 196167c390

View File

@@ -5,6 +5,10 @@ $csvData = Import-Csv -Path $csvPath
# Masterzeile extrahieren # Masterzeile extrahieren
$masterRow = $csvData | Where-Object { $_.Type -eq 'Master' } $masterRow = $csvData | Where-Object { $_.Type -eq 'Master' }
# Listen für vorhandene Benutzer und Gruppen
$existingUsers = @()
$existingGroups = @()
# Durchlaufen jeder Zeile der CSV-Datei # Durchlaufen jeder Zeile der CSV-Datei
foreach ($row in $csvData) { foreach ($row in $csvData) {
if ($row.Type -ne 'Master') { if ($row.Type -ne 'Master') {
@@ -12,25 +16,43 @@ foreach ($row in $csvData) {
$dc = if ($row.DC) { $row.DC } else { $masterRow.DC } $dc = if ($row.DC) { $row.DC } else { $masterRow.DC }
$path = "OU=$ou,DC=$dc" $path = "OU=$ou,DC=$dc"
if ($row.Type -eq 'User' -or $row.Type -eq 'ServiceAccount') { if ($row.Type -eq 'User' -or $row.Type -eq 'SA') {
# Name aus FirstName und LastName generieren, falls nicht vorhanden # Name aus FirstName und LastName generieren, falls nicht vorhanden
$name = if ($row.Name) { $row.Name } else { $row.FirstName + " " + $row.LastName } $name = if ($row.Name) { $row.Name } else { $row.FirstName + " " + $row.LastName }
# Überprüfen, ob der Benutzer bereits existiert
if (Get-ADUser -Filter "SamAccountName -eq '$($row.SAMAccountName)'") {
$existingUsers += $row.SAMAccountName
} else {
# Erstellung des Benutzers # Erstellung des Benutzers
New-ADUser -Name $name -GivenName $row.FirstName -Surname $row.LastName -SamAccountName $row.SAMAccountName -UserPrincipalName $row.UPN -Path $path -AccountPassword (ConvertTo-SecureString $row.Password -AsPlainText -Force) -Enabled $true New-ADUser -Name $name -GivenName $row.FirstName -Surname $row.LastName -SamAccountName $row.SAMAccountName -UserPrincipalName $row.UPN -Path $path -AccountPassword (ConvertTo-SecureString $row.Password -AsPlainText -Force) -Enabled $true
# Wenn die Gruppe existiert, füge den Benutzer hinzu, andernfalls erstelle die Gruppe und füge den Benutzer hinzu # Gruppenmitgliedschaft prüfen und hinzufügen
if (Get-ADGroup -Filter "Name -eq '$($row.Group)'") { $groups = $row.Group -split ','
Add-ADGroupMember -Identity $row.Group -Members $row.SAMAccountName foreach ($group in $groups) {
if (Get-ADGroup -Filter "Name -eq '$group'") {
Add-ADGroupMember -Identity $group -Members $row.SAMAccountName
} else { } else {
New-ADGroup -Name $row.Group -GroupScope Global -Path "OU=$ou,DC=$dc" New-ADGroup -Name $group -GroupScope Global -Path "OU=$ou,DC=$dc"
Add-ADGroupMember -Identity $row.Group -Members $row.SAMAccountName Add-ADGroupMember -Identity $group -Members $row.SAMAccountName
}
}
} }
} elseif ($row.Type -eq 'Group') { } elseif ($row.Type -eq 'Group') {
# Überprüfen, ob die Gruppe bereits existiert
if (Get-ADGroup -Filter "Name -eq '$($row.Group)'") {
$existingGroups += $row.Group
} else {
# Gruppe anlegen # Gruppe anlegen
if (-not (Get-ADGroup -Filter "Name -eq '$($row.Group)'")) {
New-ADGroup -Name $row.Group -GroupScope Global -Path $path New-ADGroup -Name $row.Group -GroupScope Global -Path $path
} }
} }
} }
} }
# Zusammenfassung der vorhandenen Benutzer und Gruppen
Write-Host "`nBereits vorhandene Benutzer und Gruppen:" -ForegroundColor Red
Write-Host "Benutzer:" -ForegroundColor Red
$existingUsers | ForEach-Object { Write-Host $_ -ForegroundColor Red }
Write-Host "Gruppen:" -ForegroundColor Red
$existingGroups | ForEach-Object { Write-Host $_ -ForegroundColor Red }