diff --git a/scripts/AD_AGDLP.ps1 b/scripts/AD_AGDLP.ps1 index e0549bc..6fac014 100644 --- a/scripts/AD_AGDLP.ps1 +++ b/scripts/AD_AGDLP.ps1 @@ -29,7 +29,7 @@ $userList = Get-Users # GUI zur Zuordnung von GG zu DL und Benutzern erstellen $form = New-Object System.Windows.Forms.Form $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) $userLabel = New-Object System.Windows.Forms.Label @@ -106,59 +106,84 @@ $dlTextBox.Add_TextChanged({ $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 $okButton = New-Object System.Windows.Forms.Button $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.Add_Click({ $gg = $ggListBox.SelectedItem $dl = $dlListBox.SelectedItems $users = $userListBox.SelectedItems - # Zuordnen der Globalgruppe zu Domänenlokalen Gruppen + # Zuerst Benutzer zur Globalgruppe hinzufügen + foreach ($user in $users) { + if (-not (Get-ADGroupMember -Identity $gg -Recursive | Where-Object { $_.SamAccountName -eq $user })) { + Add-ADGroupMember -Identity $gg -Members $user + Add-DebugMessage "Benutzer $user wurde der Globalgruppe $gg hinzugefügt." "Green" + } else { + Add-DebugMessage "Benutzer $user ist bereits Mitglied der Globalgruppe $gg." "Orange" + } + } + + # Dann Globalgruppe zu einer anderen 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 ($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 Domänenlokalen Gruppe $dlGroup hinzugefügt." + Add-DebugMessage "Globalgruppe $gg wurde zur Globalgruppe $dlGroup hinzugefügt." "Green" } else { - Write-Output "Globalgruppe $gg ist bereits Mitglied der Domänenlokalen Gruppe $dlGroup." + Add-DebugMessage "Globalgruppe $gg ist bereits Mitglied der Globalgruppe $dlGroup." "Orange" } } - 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) { - if (-not (Get-ADGroupMember -Identity $gg -Recursive | Where-Object { $_.SamAccountName -eq $user })) { - Add-ADGroupMember -Identity $gg -Members $user - Write-Output "Benutzer $user wurde der Globalgruppe $gg hinzugefügt." - } else { - Write-Output "Benutzer $user ist bereits Mitglied der Globalgruppe $gg." - } } } - [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) # Beenden-Button $exitButton = New-Object System.Windows.Forms.Button $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.Add_Click({ $form.Close()