Lösch-Skripte¶
Mit einem Lösch-Skript kannst du das Löschen von Benutzerprofilen individuell anpassen und auch in komplexeren Szenarien zuverlässig durchführen. Ein Lösch-Skript kommt immer dann zum Einsatz, wenn das standardmäßige Entfernen des Profilverzeichnisses nicht ausreicht – zum Beispiel bei speziellen Anforderungen deines Unternehmens. Der Supportmitarbeitende nutzt dabei wie gewohnt die Oberfläche und muss keine weiteren Spezialschritte durchführen.
Skript-Argumente¶
In der Konfiguration (siehe Die Liste deleteProfileCommands) kannst du deinem Skript beliebige Argumente übergeben. Dabei kannst du die Platzhalter {computer} und {user} verwenden – diese werden automatisch durch den jeweiligen Computernamen und Benutzernamen ersetzt.
Beispiel-Konfiguration:
<Module name="UserProfile">
(...)
<List name="deleteProfileCommands">
<ListEntry>
<Value name="name">example</Value>
<Value name="program">powershell.exe</Value>
<Value name="arguments">C:\AssistantScripts\delete_profile.ps1 "{computer}" "{user}"</Value>
</ListEntry>
</List>
(...)
</Module>
Skriptausgabe (JSON)¶
Dein Skript muss als Ausgabe immer ein JSON-Objekt liefern. Die benötigten Felder sind in den folgenden Tabellen zusammengefasst. In der Spalte „Erfolg“ siehst du, welche Felder bei erfolgreicher Ausführung nötig sind, in der Spalte „Fehler“ die für Fehlerfälle. Das erlaubt eine saubere und konsistente Auswertung in der Benutzeroberfläche.
Erforderlich – muss vorhanden sein. |
|
Darf nicht vorhanden sein. |
|
Optional. |
Feld |
Erfolg |
Fehler |
Beschreibung |
|---|---|---|---|
|
Muss immer enthalten sein. Werte: |
||
|
Nur im Fehlerfall. Begründung für das Scheitern, wird im Assistenten angezeigt. |
||
|
Optional. Für ausführliche Fehlersuche (Log-Eintrag). |
||
|
Optional. Hinweise/Warnungen (Log-Eintrag). |
||
|
Optional. Zusätzliche Informationen (Log-Eintrag). |
Rückgabewert (Exit-Code) des Skripts¶
Das Skript muss immer mit Exit-Code 0 enden – egal ob erfolgreich oder mit Fehler. Fehler werden ausschließlich über das JSON-Objekt im Output kommuniziert.
Endet das Skript mit einem anderen Rückgabewert, wird der Assistent sofort mit einer Fehlermeldung (wie z.B. „The program failed with exit code 2“) abgebrochen.
Beispiel eines Lösch-Skripts (Windows, PowerShell)¶
Das folgende Beispiel verwendet PowerShell und entfernt ein Windows-Benutzerprofil komplett – inklusive Benutzerordner und aller Registry-Einträge. Es nutzt das bekannte Remove-WmiObject-Cmdlet, um ein Profil sicher zu löschen (dies entspricht der empfohlenen Methode für Windows-Admins).
param (
[string]$computerName,
[string]$username
)
try {
# Hole das Userprofil-Objekt via WMI (klassisch für Windows-Betrieb)
$profile = Get-WmiObject -Class Win32_UserProfile -ComputerName $computerName | Where-Object { $_.LocalPath -like "*\$username" }
if ($null -eq $profile) {
$result = @{
status = "failure"
reason = "Profil für Benutzer '$username' auf Computer '$computerName' wurde nicht gefunden."
}
}
else {
# Versuche das Profil zu löschen
$profile.Delete()
$result = @{
status = "success"
info = "Profil für Benutzer '$username' wurde erfolgreich gelöscht."
}
}
}
catch {
$result = @{
status = "failure"
reason = $_.Exception.Message
}
}
# Gib das Ergebnis als JSON zurück
$result | ConvertTo-Json