# 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" } }