38873
23.08.2007, aktualisiert am 24.08.2007
17493
16
0
Mit Batch - Alle lokale User löschen ausser...
Lösche alle User ausser Administrator, Service
Hallo
Ich möchte über eine Batch alle User löschen ausser 2 vorgebene User die erhalten bleiben sollen.
Bei den Usern handelt es sich um lokale User die Administratorrechte haben.
Hintergrund der Aktion ist eine Installationsbatch die nach einer Imageerstellung auf dem jeweiligen
Client auszuführen ist. Nachdem das Image aufgesetzt ist sollen alle User gelöscht werden, ausser
eben Administrator und Service. Weiss jemand wie man das bewerkstelligen kann ?
Ich bin für jeden Tipp dankbar.
Grüße
muLio
Hallo
Ich möchte über eine Batch alle User löschen ausser 2 vorgebene User die erhalten bleiben sollen.
Bei den Usern handelt es sich um lokale User die Administratorrechte haben.
Hintergrund der Aktion ist eine Installationsbatch die nach einer Imageerstellung auf dem jeweiligen
Client auszuführen ist. Nachdem das Image aufgesetzt ist sollen alle User gelöscht werden, ausser
eben Administrator und Service. Weiss jemand wie man das bewerkstelligen kann ?
Ich bin für jeden Tipp dankbar.
Grüße
muLio
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 66917
Url: https://administrator.de/contentid/66917
Ausgedruckt am: 25.11.2024 um 23:11 Uhr
16 Kommentare
Neuester Kommentar
Mit diesem Script kannst Du einen expliziten User löschen.
Name: DelUser.vbs
Option Explicit
On Error Resume Next
Dim strComputer
Dim oComputer
Dim oUser
Dim oNetwork
Dim oGroup
'Hier den Namen des zu löschenden Benutzers eintragen
Const cUsername="Benutzername"
'Wie heißt der Rechner
Set oNetwork = WScript.CreateObject("WScript.Network")
strComputer=oNetwork.ComputerName
Set oComputer = GetObject("WINNT://" & strComputer & ",computer")
'Löschen von cUsername
oComputer.Delete "User", cUsername
Die VBS mit cScript DelUser.vbs aufrufen und los geht's
Name: DelUser.vbs
Option Explicit
On Error Resume Next
Dim strComputer
Dim oComputer
Dim oUser
Dim oNetwork
Dim oGroup
'Hier den Namen des zu löschenden Benutzers eintragen
Const cUsername="Benutzername"
'Wie heißt der Rechner
Set oNetwork = WScript.CreateObject("WScript.Network")
strComputer=oNetwork.ComputerName
Set oComputer = GetObject("WINNT://" & strComputer & ",computer")
'Löschen von cUsername
oComputer.Delete "User", cUsername
Die VBS mit cScript DelUser.vbs aufrufen und los geht's
Hallo
Das hast du ja jetzt.
Das wolltest (und solltest - learning by doing) du also allein machen
ja aber
1. auch "All Users" und der wird gebraucht !
2. nur die User, die sich schon mal angemeldet hatten und nicht alle die eingerichtet sind.
cu paulepank
Mein Problem ist, dass ich nicht weiss wie ich mit Bordmitteln von WindowsXP eine Userliste erstellen kann bei der User für User in einer Zeile steht.
Das hast du ja jetzt.
Wenn ich das hätte könnte ich alle User löschen ausser "Administrator" und "Service"
Das wolltest (und solltest - learning by doing) du also allein machen
@echo OFF
cd "C:\Dokumente und
Einstellungen"
dir /b > users.txt
Wenn ich das so mache dann schreibt er mir
alle schön brav in eine Datei.
cd "C:\Dokumente und
Einstellungen"
dir /b > users.txt
Wenn ich das so mache dann schreibt er mir
alle schön brav in eine Datei.
ja aber
1. auch "All Users" und der wird gebraucht !
2. nur die User, die sich schon mal angemeldet hatten und nicht alle die eingerichtet sind.
cu paulepank
@paulepank
Ich hatte gemeint, wenn die Useranzahl nicht ein Vielfaches von 3 ist und daher %j und/oder %k leer sind, steht "ECHO ist eingeschaltet (ON)." in der Liste ...
Im übrigen waren wir uns hinsichtlich der Vorgangsweise ja ohnehin ziemlich einig ...
@38873
Was mich irgendwie interessieren würde - warum sind die User im Image überhaupt drin? Wäre doch eigentlich einfacher, sie gleich vor dem Erstellen des Images zu eliminieren ...
Grüße
bastla
Ich hatte gemeint, wenn die Useranzahl nicht ein Vielfaches von 3 ist und daher %j und/oder %k leer sind, steht "ECHO ist eingeschaltet (ON)." in der Liste ...
Im übrigen waren wir uns hinsichtlich der Vorgangsweise ja ohnehin ziemlich einig ...
@38873
Was mich irgendwie interessieren würde - warum sind die User im Image überhaupt drin? Wäre doch eigentlich einfacher, sie gleich vor dem Erstellen des Images zu eliminieren ...
Grüße
bastla
Hallo,
@38873
da dein eigentliches Problem gelöst ist, kannst du den niedlichen grünen Haken setzen.
@bastla,
wo du Recht hast hast du Recht
cu paulepank
@38873
da dein eigentliches Problem gelöst ist, kannst du den niedlichen grünen Haken setzen.
@bastla,
wo du Recht hast hast du Recht
cu paulepank
Hallo muLio!
Da "findstr" mehrere durch Leerstellen getrennte Suchbegriffe akzeptiert, sollte es auch so gehen:
Unterschied (Nachteil?): In "users.txt" stehen bei dieser Variante noch alle User, also auch die nicht zu löschenden.
Falls übrigens bei Deinem Batch die "O.K."-Meldungen nicht sichtbar sein sollten, liegt es daran, dass ">" ohne Maskierung mit "^" als Umleitungszeichen verwendet wird ...
Grüße
bastla
Da "findstr" mehrere durch Leerstellen getrennte Suchbegriffe akzeptiert, sollte es auch so gehen:
@echo off
del users.txt
for /f "skip=4 tokens=1,2,3" %%i in ('net user^|findstr /v "Der"') do @(echo %%i & echo.%%j & echo.%%k)>>users.txt
for /f %%i in ('findstr /v "Administrator edv_tech Gast" users.txt') do (
echo Loesche User %%i
net user %%i /DELETE
echo User %%i: -^> O.K.
echo.
ping 127.0.0.1 -n 10 -w 10000 > NUL
)
Falls übrigens bei Deinem Batch die "O.K."-Meldungen nicht sichtbar sein sollten, liegt es daran, dass ">" ohne Maskierung mit "^" als Umleitungszeichen verwendet wird ...
Grüße
bastla
Hallo muLio!
Mit Deiner Variante hast Du dann sozusagen eine "Protokolldatei" (zwar nicht der gelöschten, aber zumindest der zu löschenden User) erstellt - deshalb meine Überlegung, ob es ein Nachteil wäre, wenn (wie bei mir) alle User in der Liste stehen ...
Wenn es aber tatsächlich ein Protokoll werden soll, könntest Du noch etwas in der Art versuchen (ungetestet):
Falls der Löschbefehl ohne Fehler ausgeführt wurde, wird eine entsprechende Zeile ins Protokoll geschrieben.
Grüße
bastla
Mit Deiner Variante hast Du dann sozusagen eine "Protokolldatei" (zwar nicht der gelöschten, aber zumindest der zu löschenden User) erstellt - deshalb meine Überlegung, ob es ein Nachteil wäre, wenn (wie bei mir) alle User in der Liste stehen ...
Wenn es aber tatsächlich ein Protokoll werden soll, könntest Du noch etwas in der Art versuchen (ungetestet):
net user %%i /DELETE && echo Gelöscht: %%i >> Protokoll.txt
Grüße
bastla