Profile sauber löschen via Batch
Hallo,
ich tüftle nun seit ein paar Stunden rum, und werde leider bei Google sonst auch nicht weiter fündig..
Ich möchte via Batch Remote Benutzerprofile löschen.
Idee dazu war über Netzwerk auf das Laufwerk des Zielrechners zu gehen, dort in C:\Users zu gehen, mir den gewünschten Profilnamen raussuchen, diesen Ordner löschen oder wenn ein Backup gewünscht ist, umzubenennen, und anschließend in die Registry zu gehen, und mir dort unter "Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\" den richtigen Eintrag rauszusuchen und zu löschen. Das Script habe ich nun soweit fertig, nur leider scheitert es an dem Punkt wo ich in der Registry den richtigen Eintrag löschen will.
Ich möchte quasi mit der Batch schauen, in welchem Reg Ordner unter "Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\#Ordnername#"
der Eintrag "ProfileImagePath" "C:\Users\#Profilname#" ist und wenn #Profilname#=#Angegebner Profilname# ist den ganzen Reg Ordner in dem der Eintrag liegt löschen.
Habe nun wirklich schon alles Probiert. Den einzelnen Eintrag kriege ich gelöscht aber nicht den ganzen Ordner. Hat dazu jemand eine Idee ?
Das Script sieht im moment so aus :
@echo off
:start
cls
echo Clientname :
Set /p Client=
:Auswahl
cls
echo (1) Einzelnes (Bestimmtes) Profil
echo (2) Alle Profile
Set /p Auswahl=
if %Auswahl%==1 goto einzelnauswahl
if %Auswahl%==2 goto mehrereauswahl
:einzelnauswahl
cls
echo Profiliste fuer Client %Client% :
dir \\%Client%\C$\Users /b
echo Welches Profil soll geloescht werden ?
Set /p User=
echo soll ein Backup des Profils erstellt werden ? J/N
Set /p Backup=
if %Backup%==J goto einzelnmitbackup
if %Backup%==N goto einzelnohnebackup
:einzelnmitbackup
echo Profil %User% auf Clientname %Client% wird gelöscht..
ren \\%Client%\C$\Users\%User% %User%_backup
ich tüftle nun seit ein paar Stunden rum, und werde leider bei Google sonst auch nicht weiter fündig..
Ich möchte via Batch Remote Benutzerprofile löschen.
Idee dazu war über Netzwerk auf das Laufwerk des Zielrechners zu gehen, dort in C:\Users zu gehen, mir den gewünschten Profilnamen raussuchen, diesen Ordner löschen oder wenn ein Backup gewünscht ist, umzubenennen, und anschließend in die Registry zu gehen, und mir dort unter "Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\" den richtigen Eintrag rauszusuchen und zu löschen. Das Script habe ich nun soweit fertig, nur leider scheitert es an dem Punkt wo ich in der Registry den richtigen Eintrag löschen will.
Ich möchte quasi mit der Batch schauen, in welchem Reg Ordner unter "Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\#Ordnername#"
der Eintrag "ProfileImagePath" "C:\Users\#Profilname#" ist und wenn #Profilname#=#Angegebner Profilname# ist den ganzen Reg Ordner in dem der Eintrag liegt löschen.
Habe nun wirklich schon alles Probiert. Den einzelnen Eintrag kriege ich gelöscht aber nicht den ganzen Ordner. Hat dazu jemand eine Idee ?
Das Script sieht im moment so aus :
@echo off
:start
cls
echo Clientname :
Set /p Client=
:Auswahl
cls
echo (1) Einzelnes (Bestimmtes) Profil
echo (2) Alle Profile
Set /p Auswahl=
if %Auswahl%==1 goto einzelnauswahl
if %Auswahl%==2 goto mehrereauswahl
:einzelnauswahl
cls
echo Profiliste fuer Client %Client% :
dir \\%Client%\C$\Users /b
echo Welches Profil soll geloescht werden ?
Set /p User=
echo soll ein Backup des Profils erstellt werden ? J/N
Set /p Backup=
if %Backup%==J goto einzelnmitbackup
if %Backup%==N goto einzelnohnebackup
:einzelnmitbackup
echo Profil %User% auf Clientname %Client% wird gelöscht..
ren \\%Client%\C$\Users\%User% %User%_backup
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 598942
Url: https://administrator.de/contentid/598942
Ausgedruckt am: 22.11.2024 um 17:11 Uhr
6 Kommentare
Neuester Kommentar
Moin,
Batch ist dafür die falsche "Sprache". Tu Dir einen großen Gefallen und mache das mit der Powershell.
Deshalb nimmt man dafür ja auch die Powershell. Da liegt die gesamte Registry als Objekte in Form von "Laufwerken" vor. Da kann ich drauf schreiben wie ich will. Und dass das Unterobjekt, dass Du suchst, eine SID ist, ist auch kein Problem, weil der User ebenso als Objekt vorliegt und ich so anhand des Usernamens die zugehörige SID herausfinden kann. Das geht mit Batches afaik nicht. Und sollte es doch irgendwie gehen, dann ist das wahrscheinlich ein kilometerlanges Skript mit 100 Goto-Anweisungen (einer meiner Profs meinte mal: Wer goto braucht, kann nicht programmieren ). In der PS wäre das ein Befehl.
Vorher hat man in $sid die des Users eingelesen und gut ist. (Bei den geschweiften Klammern bin ich mir nicht sicher, ob die im Objekt nicht schon drin sind.)
Ok
Mach's in der Powershell.
Liebe Grüße
Erik
Zitat von @Cwinnn:
Hallo,
ich tüftle nun seit ein paar Stunden rum, und werde leider bei Google sonst auch nicht weiter fündig..
Ich möchte via Batch Remote Benutzerprofile löschen.
Hallo,
ich tüftle nun seit ein paar Stunden rum, und werde leider bei Google sonst auch nicht weiter fündig..
Ich möchte via Batch Remote Benutzerprofile löschen.
Batch ist dafür die falsche "Sprache". Tu Dir einen großen Gefallen und mache das mit der Powershell.
Idee dazu war über Netzwerk auf das Laufwerk des Zielrechners zu gehen, dort in C:\Users zu gehen, mir den gewünschten Profilnamen raussuchen, diesen Ordner löschen oder wenn ein Backup gewünscht ist, umzubenennen, und anschließend in die Registry zu gehen, und mir dort unter "Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\" den richtigen Eintrag rauszusuchen und zu löschen. Das Script habe ich nun soweit fertig, nur leider scheitert es an dem Punkt wo ich in der Registry den richtigen Eintrag löschen will.
Deshalb nimmt man dafür ja auch die Powershell. Da liegt die gesamte Registry als Objekte in Form von "Laufwerken" vor. Da kann ich drauf schreiben wie ich will. Und dass das Unterobjekt, dass Du suchst, eine SID ist, ist auch kein Problem, weil der User ebenso als Objekt vorliegt und ich so anhand des Usernamens die zugehörige SID herausfinden kann. Das geht mit Batches afaik nicht. Und sollte es doch irgendwie gehen, dann ist das wahrscheinlich ein kilometerlanges Skript mit 100 Goto-Anweisungen (einer meiner Profs meinte mal: Wer goto braucht, kann nicht programmieren ). In der PS wäre das ein Befehl.
remove-item HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\{$sid}
Vorher hat man in $sid die des Users eingelesen und gut ist. (Bei den geschweiften Klammern bin ich mir nicht sicher, ob die im Objekt nicht schon drin sind.)
Ich möchte quasi mit der Batch schauen, in welchem Reg Ordner unter "Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\#Ordnername#"
Ok
$(Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\$sid\").ProfileImagePath
Mach's in der Powershell.
Liebe Grüße
Erik
Ich möchte via Batch Remote Benutzerprofile löschen.
[...]
Warum nicht einfach ein
Get-CimInstance -ClassName Win32_UserProfile | where {$_.LocalPath.Split('\')[-1] -eq '<Benutzername>'} | Remove-CimInstance
Ich verwende das Tool von https://helgeklein.com/free-tools/delprof2-user-profile-deletion-tool/
Damit kann man einfach und schnell mal ein oder alle Profil/e loeschen.
Damit kann man einfach und schnell mal ein oder alle Profil/e loeschen.
Zitat von @mbehrens:
[...]
Warum nicht einfach ein
Ich möchte via Batch Remote Benutzerprofile löschen.
[...]
Warum nicht einfach ein
Get-CimInstance -ClassName Win32_UserProfile | where {$_.LocalPath.Split('\')[-1] -eq '<Benutzername>'} | Remove-CimInstance
Bei mir funktioniert das nicht es kommt folgende Meldung:
In Zeile:1 Zeichen:74
... ce -ClassName Win32_UserProfile | where {$_.LocalPath.Split ('\')[-1] ...
~
Unerwartetes Token "(" in Ausdruck oder Anweisung.+ CategoryInfo : ParserError: ( [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : UnexpectedToken
Bei Benutzername habe Ich "Test" eingegeben und vorher natürlich einen Ordner Test unter Benutzer erstellt.