diff --git a/Support/user_profil_loeschen.ps1 b/Support/user_profil_loeschen.ps1 new file mode 100644 index 0000000..7b6ae64 --- /dev/null +++ b/Support/user_profil_loeschen.ps1 @@ -0,0 +1,48 @@ +# Definieren Sie den Namen des Remote-Computers +$remoteComputer = Read-Host "Bitte geben Sie die Maschinennummer (Hostname oder IP) ein" + +# Stellen Sie eine WMI-Verbindung zum Remote-Computer her +$credential = Get-Credential # Hier werden Sie aufgefordert, Benutzername und Passwort einzugeben + +# Hauptloop, um Benutzerprofile zu löschen +do { + # Abfrage der aktuellen angemeldeten Benutzer + $currentlyLoggedInUser = Get-WmiObject -Class Win32_ComputerSystem -ComputerName $remoteComputer -Credential $credential + + # Ausgabe des aktuell angemeldeten Benutzers + Write-Output "Aktuell angemeldeter Benutzer: $($currentlyLoggedInUser.UserName)" + + # Abfrage aller Benutzerprofile + $query = "SELECT * FROM Win32_UserProfile" + $userProfiles = Get-WmiObject -Class Win32_UserProfile -ComputerName $remoteComputer -Credential $credential + + # Ausgabe der Profilinformationen und Sammlung der Profilpfade in ein Array + $profilePaths = @() + foreach ($profile in $userProfiles) { + Write-Output "Profil von Benutzer: $($profile.LocalPath)" + $profilePaths += $profile.LocalPath + } + + # Der Benutzer wählt ein Profil, das gelöscht werden soll + $selectedProfile = $host.ui.PromptForChoice("Wählen Sie ein Profil zum Löschen", "Wählen Sie das Benutzerprofil, das Sie löschen möchten:", $profilePaths, 0) + + # Korrektes Formatieren des Pfades für die WMI-Abfrage + $formattedPath = $profilePaths[$selectedProfile] -replace '\\', '\\' + + # Bestätigen der Löschung + $confirmation = $host.ui.PromptForChoice("Bestätigung", "Sind Sie sicher, dass Sie das Profil `'$formattedPath'` löschen möchten?", @("Ja", "Nein"), 1) + + if ($confirmation -eq 0) { + # Administrative Rechte sind erforderlich + $deleteProfile = Get-WmiObject -Class Win32_UserProfile -Filter "LocalPath = '$formattedPath'" -ComputerName $remoteComputer -Credential $credential + $deleteProfile.Delete() + Write-Output "Profil `'$formattedPath'` wurde gelöscht." + } else { + Write-Output "Löschung abgebrochen." + } + + # Abfrage, ob der Benutzer ein weiteres Profil löschen möchte + $continue = $host.ui.PromptForChoice("Weitermachen", "Möchten Sie ein weiteres Benutzerprofil löschen?", @("Ja", "Nein"), 1) +} while ($continue -eq 0) + +Write-Output "Programm beendet."