commit 6839c95664f2c54c7cf781dc8429c99746f413d2 Author: Alin Date: Wed Apr 23 18:05:16 2025 +0000 remove_user_group.ps1 Neu hinzugefügt. diff --git a/Active_Directory/remove_user_group.ps1 b/Active_Directory/remove_user_group.ps1 new file mode 100644 index 0000000..381981b --- /dev/null +++ b/Active_Directory/remove_user_group.ps1 @@ -0,0 +1,76 @@ +# Variablen +$GroupName = "A-EMM-Mail" # Name der AD-Gruppe, aus der die Benutzer entfernt werden +$LogFilePath = "C:\Temp\RemoveUsersLog.txt" # Pfad zur LOG-Datei + +# Sicherstellen, dass der Log-Ordner existiert +if (-not (Test-Path (Split-Path $LogFilePath))) { + New-Item -ItemType Directory -Path (Split-Path $LogFilePath) -Force +} + +# Log-Funktion definieren +function Write-Log { + param ( + [string]$Message, + [string]$Type + ) + $Timestamp = Get-Date -Format "yyyy-MM-dd HH:mm:ss" + $LogEntry = "$Timestamp - $Type - $Message" + Add-Content -Path $LogFilePath -Value $LogEntry +} + +# Importiere das Active Directory Modul (falls noch nicht geladen) +try { + Import-Module ActiveDirectory -ErrorAction Stop +} catch { + Write-Error "Active Directory Modul konnte nicht geladen werden." + Write-Log -Message "Active Directory Modul konnte nicht geladen werden." -Type "ERROR" + exit +} + +# Wird für das Dialog Fenster benötigt +try { + Add-Type -AssemblyName System.Windows.Forms -ErrorAction Stop +} catch { + Write-Error "Windows Forms konnte nicht geladen werden." + Write-Log -Message "Windows Forms konnte nicht geladen werden." -Type "ERROR" + exit +} + +# OpenFileDialog erstellen +$OpenFileDialog = New-Object System.Windows.Forms.OpenFileDialog +$OpenFileDialog.InitialDirectory = [Environment]::GetFolderPath('Desktop') # Standardverzeichnis +$OpenFileDialog.Filter = "CSV Files (*.csv)|*.csv|All Files (*.*)|*.*" # Filter für Dateitypen +$OpenFileDialog.Title = "Wählen Sie eine Datei aus" + +# Dialog anzeigen und Datei auswählen +if ($OpenFileDialog.ShowDialog() -eq [System.Windows.Forms.DialogResult]::OK) { + $CSVFilePath = $OpenFileDialog.FileName + Write-Host "Ausgewählte Datei: $CSVFilePath" + Write-Log -Message "Ausgewählte Datei: $CSVFilePath" -Type "INFO" +} else { + Write-Host "Keine Datei ausgewählt." + Write-Log -Message "Keine Datei ausgewählt." -Type "ERROR" + exit +} + +# CSV-Datei einlesen +try { + $Users = Import-Csv -Path $CSVFilePath + Write-Log -Message "CSV-Datei erfolgreich eingelesen: $CSVFilePath" -Type "INFO" +} catch { + Write-Error "Fehler beim Einlesen der CSV-Datei: $_" + Write-Log -Message "Fehler beim Einlesen der CSV-Datei: $_" -Type "ERROR" + exit +} + +# Benutzer aus der Gruppe entfernen +foreach ($User in $Users) { + try { + Remove-ADGroupMember -Identity $GroupName -Members $User.Username -Confirm:$false + Write-Host "Benutzer $($User.Username) wurde erfolgreich aus der Gruppe '$GroupName' entfernt." + Write-Log -Message "Benutzer $($User.Username) wurde erfolgreich aus der Gruppe '$GroupName' entfernt." -Type "SUCCESS" + } catch { + Write-Error "Fehler beim Entfernen des Benutzers $($User.Username): $_" + Write-Log -Message "Fehler beim Entfernen des Benutzers $($User.Username): $_" -Type "ERROR" + } +}