scripts/AD_AGDLP.ps1 aktualisiert

This commit is contained in:
2024-11-06 13:54:00 +01:00
parent 23fe01cb1a
commit 0766c26aa4

View File

@@ -29,7 +29,7 @@ $userList = Get-Users
# GUI zur Zuordnung von GG zu DL und Benutzern erstellen # GUI zur Zuordnung von GG zu DL und Benutzern erstellen
$form = New-Object System.Windows.Forms.Form $form = New-Object System.Windows.Forms.Form
$form.Text = "GG zu DL Zuordnung und Benutzer" $form.Text = "GG zu DL Zuordnung und Benutzer"
$form.Size = New-Object System.Drawing.Size(805, 345) # Fenstergröße anpassen $form.Size = New-Object System.Drawing.Size(805, 435) # Fenstergröße anpassen
# Benutzer-Eingabe und Liste (ganz oben) # Benutzer-Eingabe und Liste (ganz oben)
$userLabel = New-Object System.Windows.Forms.Label $userLabel = New-Object System.Windows.Forms.Label
@@ -106,59 +106,84 @@ $dlTextBox.Add_TextChanged({
$dlListBox.Items.AddRange($filteredDLs) $dlListBox.Items.AddRange($filteredDLs)
}) })
# RichTextBox für Debug-Informationen hinzufügen
$debugTextBox = New-Object System.Windows.Forms.RichTextBox
$debugTextBox.Location = New-Object System.Drawing.Point(10, 265)
$debugTextBox.Size = New-Object System.Drawing.Size(770, 80)
$debugTextBox.ReadOnly = $true
$form.Controls.Add($debugTextBox)
# Methode zur Ausgabe von Nachrichten im RichTextBox
function Add-DebugMessage {
param (
[string]$message,
[string]$color
)
$debugTextBox.SelectionStart = $debugTextBox.TextLength
$debugTextBox.SelectionLength = 0
$debugTextBox.SelectionColor = $color
$debugTextBox.AppendText("$message`r`n")
}
# OK-Button # OK-Button
$okButton = New-Object System.Windows.Forms.Button $okButton = New-Object System.Windows.Forms.Button
$okButton.Text = "OK" $okButton.Text = "OK"
$okButton.Location = New-Object System.Drawing.Point(10, 265) $okButton.Location = New-Object System.Drawing.Point(10, 355)
$okButton.Size = New-Object System.Drawing.Size(380, 30) $okButton.Size = New-Object System.Drawing.Size(380, 30)
$okButton.Add_Click({ $okButton.Add_Click({
$gg = $ggListBox.SelectedItem $gg = $ggListBox.SelectedItem
$dl = $dlListBox.SelectedItems $dl = $dlListBox.SelectedItems
$users = $userListBox.SelectedItems $users = $userListBox.SelectedItems
# Zuordnen der Globalgruppe zu Domänenlokalen Gruppen # Zuerst Benutzer zur Globalgruppe hinzufügen
foreach ($dlGroup in $dl) {
# Prüfen, ob die Gruppe eine Domänenlokale Gruppe oder eine Globalgruppe ist
if (Get-ADGroup -Filter "Name -eq '$dlGroup'") {
$groupType = (Get-ADGroup -Identity $dlGroup).GroupScope
if ($groupType -eq 'DomainLocal') {
if (-not (Get-ADGroupMember -Identity $dlGroup -Recursive | Where-Object { $_.SamAccountName -eq $gg })) {
Add-ADGroupMember -Identity $dlGroup -Members $gg
Write-Output "Globalgruppe $gg wurde zur Domänenlokalen Gruppe $dlGroup hinzugefügt."
} else {
Write-Output "Globalgruppe $gg ist bereits Mitglied der Domänenlokalen Gruppe $dlGroup."
}
}
elseif ($groupType -eq 'Global') {
if (-not (Get-ADGroupMember -Identity $dlGroup -Recursive | Where-Object { $_.SamAccountName -eq $gg })) {
Add-ADGroupMember -Identity $dlGroup -Members $gg
Write-Output "Globalgruppe $gg wurde zur Globalgruppe $dlGroup hinzugefügt."
} else {
Write-Output "Globalgruppe $gg ist bereits Mitglied der Globalgruppe $dlGroup."
}
}
}
# Benutzer zur Globalgruppe hinzufügen
foreach ($user in $users) { foreach ($user in $users) {
if (-not (Get-ADGroupMember -Identity $gg -Recursive | Where-Object { $_.SamAccountName -eq $user })) { if (-not (Get-ADGroupMember -Identity $gg -Recursive | Where-Object { $_.SamAccountName -eq $user })) {
Add-ADGroupMember -Identity $gg -Members $user Add-ADGroupMember -Identity $gg -Members $user
Write-Output "Benutzer $user wurde der Globalgruppe $gg hinzugefügt." Add-DebugMessage "Benutzer $user wurde der Globalgruppe $gg hinzugefügt." "Green"
} else { } else {
Write-Output "Benutzer $user ist bereits Mitglied der Globalgruppe $gg." Add-DebugMessage "Benutzer $user ist bereits Mitglied der Globalgruppe $gg." "Orange"
}
}
# Dann Globalgruppe zu einer anderen Globalgruppe hinzufügen
foreach ($dlGroup in $dl) {
if (Get-ADGroup -Filter "Name -eq '$dlGroup'") {
$groupType = (Get-ADGroup -Identity $dlGroup).GroupScope
if ($groupType -eq 'Global') {
if (-not (Get-ADGroupMember -Identity $dlGroup -Recursive | Where-Object { $_.SamAccountName -eq $gg })) {
Add-ADGroupMember -Identity $dlGroup -Members $gg
Add-DebugMessage "Globalgruppe $gg wurde zur Globalgruppe $dlGroup hinzugefügt." "Green"
} else {
Add-DebugMessage "Globalgruppe $gg ist bereits Mitglied der Globalgruppe $dlGroup." "Orange"
}
} }
} }
} }
[System.Windows.Forms.MessageBox]::Show("Globalgruppe $gg wurde den Gruppen $($dl -join ', ') hinzugefügt und Benutzer $($users -join ', ') zugeordnet.") # Schließlich Globalgruppe zu einer Domänenlokalen Gruppe hinzufügen
foreach ($dlGroup in $dl) {
if (Get-ADGroup -Filter "Name -eq '$dlGroup'") {
$groupType = (Get-ADGroup -Identity $dlGroup).GroupScope
if ($groupType -eq 'DomainLocal') {
if (-not (Get-ADGroupMember -Identity $dlGroup -Recursive | Where-Object { $_.SamAccountName -eq $gg })) {
Add-ADGroupMember -Identity $dlGroup -Members $gg
Add-DebugMessage "Globalgruppe $gg wurde zur Domänenlokalen Gruppe $dlGroup hinzugefügt." "Green"
} else {
Add-DebugMessage "Globalgruppe $gg ist bereits Mitglied der Domänenlokalen Gruppe $dlGroup." "Orange"
}
}
}
}
[System.Windows.Forms.MessageBox]::Show("Vorgang abgeschlossen.")
}) })
$form.Controls.Add($okButton) $form.Controls.Add($okButton)
# Beenden-Button # Beenden-Button
$exitButton = New-Object System.Windows.Forms.Button $exitButton = New-Object System.Windows.Forms.Button
$exitButton.Text = "Beenden" $exitButton.Text = "Beenden"
$exitButton.Location = New-Object System.Drawing.Point(400, 265) $exitButton.Location = New-Object System.Drawing.Point(400, 355)
$exitButton.Size = New-Object System.Drawing.Size(380, 30) $exitButton.Size = New-Object System.Drawing.Size(380, 30)
$exitButton.Add_Click({ $exitButton.Add_Click({
$form.Close() $form.Close()