Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

gelöst Was macht dieses Script?

Mitglied: Casper2k

Casper2k (Level 1) - Jetzt verbinden

28.12.2007, aktualisiert 02.01.2008, 4157 Aufrufe, 11 Kommentare

Hallo Leute,

habe einen Codeschnipsel gefunden in dem ich aber nicht wirklich durchblicke.

Ich bin gerade dabei mir ein Script für eine Serverwartung zusammenzubauen.

In diesem Scriptabschnitt möchte ich das Profilverzeichnis leeren; d.h. alle Userprofile
ausser dem Admin, dem Tester, dem Default User und dem All Users sollen gelöscht werden.

Ich dachte eigentlich dass der unten beschriebene Code das machen würde. Wirklich kapieren
was das Script tut, weiss ich aber auch nicht. Kann mir da mal jemand auch die Sprünge helfen?

01.
FOR /F "Delims= Tokens=1*" %%a IN ('DIR /B "%systemdrive%\Dokumente und Einstellungen\"') DO (
02.
IF /I NOT "%%a"=="Default User" FOR /F "Delims= Tokens=1*" %%b IN ('ECHO %%a') DO (
03.
IF /I NOT "%%a"=="All Users" FOR /F "Delims= Tokens=1*" %%c IN ('ECHO %%a') DO (
04.
IF /I NOT "%%a"=="Tester" FOR /F "Delims= Tokens=1*" %%c IN ('ECHO %%a') DO (
05.
IF /I NOT "%%a"=="Administrator" RD /s /q "%systemroot%\Dokumente und Einstellungen\%%a" >> %LogPath%\Reboot.log
06.
)
07.
)
08.
)
09.
delprof.exe /Q /I
thx
Casper2k
Mitglied: Dani
28.12.2007 um 12:03 Uhr
Hi Casper,
war das Script wirklich so oder hast du dich schon dran versucht. Also wenn das Profile löschen soll, dann fress ich ein Besen. Erstmal hat die Variable "systemroot" da gar nicht verloren, denn die hat den Wert "C:\Windows", somit schon mal ganz falsche Spur.

Für was die Schleifen, hinter jeder Abfrage sinnvoll sein soll, kapiere ich auch noch nicht ganz. Denn eigentlich wird das mit der IF-Abfrage erschlagen.

Hier mal Script (leicht verändert):
01.
@echo off
02.

03.
for /f "delims=" %%a in ('dir /b "%systemdrive%\Dokumente und Einstellungen\"')do (
04.
	if /i "%%a" NEQ "Default User" (
05.
		if /i "%%a" NEQ "All Users" (
06.
			if /i "%%a" NEQ "Tester" (
07.
				if /i "%%a" NEQ "Administrator" echo /s /q "%systemdrive%\Dokumente und Einstellungen\%%a" >> c:\Reboot.log
08.
			)
09.
		)
10.
	)
11.
)
Biber würde sowas als Onliner schreiben, nicht war? Er schaut bestimmt noch vorbei....

Für was die delprof.exe da sein soll, darfst micht nicht fragen. Vom Namen her, würde ich sagen "Profil löschen". Jedoch würde das kein Sinn machen, da "rd" das schon macht.


Grüße
Dani
Bitte warten ..
Mitglied: Casper2k
28.12.2007 um 13:20 Uhr
Hallo und danke für deine Antwort.

ich blick da auch nicht ganz durch.

delprof kommt von M$ und löscht inaktive Profile raus. Das ist kein Problem.

Ich möchte aber eigentlich erreichen dass alle Userprofile gelöscht werden
ausser die genannten. alles andere soll einfach weggelöscht werden.
ich denke das es mit rd nicht funktioniert, da die ntuser.dat usw teilweise noch
im zugriff sind und nicht einfach so weggelöscht werden können.
Bitte warten ..
Mitglied: Dani
28.12.2007 um 13:33 Uhr
Hi,
Ich möchte aber eigentlich erreichen dass alle Userprofile gelöscht werden
ausser die genannten. alles andere soll einfach weggelöscht werden.
Dies geschieht mit meinem Script oben. "rd" funktioniert sehr gut damit....ich habe nämlich außvversehen meine anderen User damit abgeschlossen. *g*

Wann soll das Script ausgeführt werden bzw. wo? Domäne oder Arbeitsgruppe beim Starten oder Abmelden, etc...Fragen über Fragen.


Grüße
Dani
Bitte warten ..
Mitglied: Casper2k
28.12.2007 um 14:04 Uhr
Wann soll das Script ausgeführt werden
bzw. wo? Domäne oder Arbeitsgruppe beim
Starten oder Abmelden, etc...Fragen über
Fragen.



Das Script soll während der wöchentlichen Serverreboots
ablaufen.
Hab schon ein Wartungsscript welches unterschiedlichste
Dinge aufräumt und die Profil Geschichte soll da eben auch
noch mit rein. Die Server um die es sich handelt, sind alles
W2k3 mit Citrix PS3.
Es sollen jedoch nur die lokal gespeicherten Profilpfade gelöscht
werden (bis auf die Ausnahmen).
Bitte warten ..
Mitglied: Dani
28.12.2007 um 14:18 Uhr
Na also, dann kommt dir die ntuser.dat nicht in die Gwehre. Denn beim Restart, ist ja keiner der User schon mal angemeldet gewesen. Es sollte eben mit Adminrechten laufen bzw. unter einem Adminkonto. Sonst wird das nichts....!


Grüße
Dani
Bitte warten ..
Mitglied: Casper2k
28.12.2007 um 17:59 Uhr
Das Script wird nach dem Neustart per Autoexnt ausgeführt...
aber das sollte eigentlich hinhauen. ich teste das nächste woche
mittwoch mal...
Bitte warten ..
Mitglied: Biber
29.12.2007 um 12:44 Uhr
Moin Casper2k,

ich schließe mich Danis Ausführungen an - das Skript ganz oben ist Blödsinn bzw. zu umständlich.

Folgende drei Varianten bringen das gewünsche Ergebnis (auf den Monitor statt in ein Logfile, kann also gefahrlos getestet werden):
01.
@for /f "delims=" %%a in ('dir /b /ah /ad "%USERPROFILE%\..\*"') do @(
02.
       if /i "%%a" NEQ "Default User" (
03.
		if /i "%%a" NEQ "All Users" (
04.
			if /i "%%a" NEQ "Tester" (
05.
				if /i "%%a" NEQ "Administrator" echo [1]rd /s /q "%USERPROFILE%\..\%%a" 
06.
			)
07.
		)
08.
	)
09.
)
10.

11.
@for /d %%a in ("%ALLUSERSPROFILE%\..\*") do @(
12.
       if /i "%%~nxa" NEQ "Default User" (
13.
		if /i "%%~nxa" NEQ "All Users" (
14.
			if /i "%%~nxa" NEQ "Tester" (
15.
				if /i "%%~nxa" NEQ "Administrator" echo [2]rd /s /q "%ALLUSERSPROFILE%\..\%%~nxa" 
16.
			)
17.
		)
18.
	)
19.
)
20.

21.
@for /f "delims=, tokens=1-4" %%i in (""Default User","All Users","Tester","Administrator"") do @(
22.
   @for /d %%a in ("%ALLUSERSPROFILE%\..\*") do @(
23.
       if /i "%%~nxa" NEQ %%i (
24.
		if /i "%%~nxa" NEQ %%j (
25.
			if /i "%%~nxa" NEQ %%k (
26.
				if /i "%%~nxa" NEQ %%l echo [3]rd /s /q "%ALLUSERSPROFILE%\..\%%~nxa" 
27.
			)
28.
		)
29.
	)
30.
)
31.
)
Anmerkungen:
- Variante [1] wäre die einzige, bei der Du das Profil "Default User" überhaupt durch die FOR-Anweisung erwischt.
Denn "Default User" ist ein "verstecktes" Verzeichnis und wird weder beim normalen "Dir /a:d" noch bei einer FOR/D-Anweisung mit ausgegeben.
Erst der Zusatzschalter "DIR ../a:h" zieht auch dieses Verzeichnis/Profil mit an.
- Ich habe bei allen Varianten RELATIV gearbeitet - auf der Parallelebene von %USERPROFILE% oder %ALLUSERSPROFILE%. Ist mir lieber.
- die dritte Variante ist nicht kürzer, aber IMHO wartbarer - ich habe die Ausnahme-Profile im Blick.
- wie geschrieben, die Prüfung auf "..NEQ "Default User" ist bei [2] und [3] Wunschdenken. Dieses Profil siehst Du nicht.
- Zu ergänzen wäre aus meiner Sicht aber noch als 5. Profil das eigene, also "%username%". Das würde ich gern behalten.

Grüße
Biber
Bitte warten ..
Mitglied: Casper2k
02.01.2008 um 08:05 Uhr
ok, ich denke

@for /f "delims=, tokens=1-4" %%i in (""Default User","All Users","Tester","Administrator"") do @(
@for /d %%a in ("%ALLUSERSPROFILE%\..\*") do @(
if /i "%%~nxa" NEQ %%i (
if /i "%%~nxa" NEQ %%j (
if /i "%%~nxa" NEQ %%k (
if /i "%%~nxa" NEQ %%l echo [3]rd /s /q "%ALLUSERSPROFILE%\..\%%~nxa"
)
)
)
)
)

ist das richtige für mich.


Verstehe ich das richtig, dass in der ersten Klammer (da wo auch Tester steht) die Ausnahmen definiert werden?

Was ich allerdings nicht ganz verstehe, was macht die Variable %ALLUSERSPROFILE%\..\%%~nxa ? Müsste doch eigentlich if /i "%%~nxa" NEQ %%l echo [3]rd /s /q "C:\Dokumente und Einstellungen\%%~nxa" heißen, oder?

cu
Casper
Bitte warten ..
Mitglied: Biber
02.01.2008 um 08:33 Uhr
Moin Casper2k,

Verstehe ich das richtig, dass in der ersten Klammer (da wo auch Tester steht) die Ausnahmen definiert werden?
Jepp, exakt. Deshalb ist mir die auch am sympathischsten. Siehe oben, da habe ich geschrieben: "die dritte Variante ist nicht kürzer, aber IMHO wartbarer - ich habe die Ausnahme-Profile im Blick."

Was ich allerdings nicht ganz verstehe, was macht die Variable %ALLUSERSPROFILE%\..\%%~nxa?

Hmmja, das ist vielleicht einfacher am CMD-Prompt nachzuspielen als zu erklären...
[OT]Normalerweise hätte ich jetzt "nachzukaspern" geschrieben, aber in Anbetracht Deines Nicks...**gg [/OT]

Also, lass Dir am CMD mit "set ALLUSERS" mal den Variablenwert von %ALLUSERSPROFILE%" anzeigen.
Vorgeplänkel I:
01.
>set allusers
02.
ALLUSERSPROFILE=C:\Dokumente und Einstellungen\All Users
Vorgeplänkel II
In der Laufvariablen %%a stehen nacheinander alle gefundenen Ordnernamen (mit Lw+Pfad+Ordnername), die auch bei einem
01.
>dir /b "%allusersprofile%\..\*"
...gefunden worden wären.
Von diesen Ordnern will ich aber NUR die OrdnerNAMEN ( also %%~na) statt die Ordner-Lw+Ordner-Pfad+Ordnernamen, die ich mit %%a erhalten würde.
Denn diese Ordnernamen will ich ja mit "Administrator"/"Tester" etc. vergleichen können.

Wenn es noch nicht ganz klar ist, dann lass den Batch-Einzeiler mal laufen OHNE die ganzen "@", die die Anzeige unterdrücken. Dann kannst Du die ganzen aufgelösten Variablenwerte sehen.
Müsste doch eigentlich if /i "%%~nxa" NEQ %%l echo [3]rd /s /q "C:\Dokumente und Einstellungen\%%~nxa" heißen, oder?
Hmmm... heißt es auch ...eigentlich.... aber "...%ALLUSERSPROFILE%\..\%%~nxa " ist ein bisschen universeller...

Grüße
Biber
Bitte warten ..
Mitglied: Casper2k
02.01.2008 um 08:42 Uhr

> Was ich allerdings nicht ganz verstehe,
was macht die Variable
%ALLUSERSPROFILE%\..\%%~nxa?

Also, lass Dir am CMD mit "set
ALLUSERS" mal den Variablenwert von
%ALLUSERSPROFILE%" anzeigen.
Vorgeplänkel I:
01.
>set allusers
02.
> ALLUSERSPROFILE=C:\Dokumente und
03.
> Einstellungen\All Users
04.
> 
Vorgeplänkel II
In der Laufvariablen %%a stehen nacheinander
alle gefundenen Ordnernamen (mit
Lw+Pfad+Ordnername), die auch bei einem
01.
>dir /b
02.
> "%allusersprofile%\..\*"
03.
> 
...gefunden worden wären.
Von diesen Ordnern will ich aber NUR die
OrdnerNAMEN ( also %%~na) statt die
Ordner-Lw+Ordner-Pfad+Ordnernamen, die ich
mit %%a erhalten würde.
Denn diese Ordnernamen will ich ja mit
"Admistrator"/"Tester"
etc. vergleichen können.


Ah ich dachte dass da im Ordner ALL Users dann nach den
restlichen Profil-Ordnern gesucht wird... Vor allem weil du ja auch
noch \..\ zwischen %ALLUSERSPROFILE% setzt...
Teste das Ganze gerade noch mit mehreren Usern...
Bitte warten ..
Mitglied: Casper2k
02.01.2008 um 08:49 Uhr
Alles klar, passt alles!

DANKEEEEE
Bitte warten ..
Ähnliche Inhalte
Windows Server
Netzwerkfreigabe macht Probleme
gelöst Frage von TeWutzWindows Server7 Kommentare

Moin, mal gucken, ob jemandem dazu was einfällt Ich verzweifele langsam. Ich habe hier einen 2012er Server mit diversen ...

Viren und Trojaner
Malwarebytes macht Probleme
Information von transoceanViren und Trojaner3 Kommentare

Moin, ich habe Malwarebytes gerade auf zwei Clients deinstalliert. Der Webschutz lässt sich nicht starten und die Software verbraucht ...

Windows 10
UAC Benutzersteuerung macht Probleme
gelöst Frage von MadzylinderWindows 105 Kommentare

Moin, ich habe einen Benutzer (Betriebsleiter) der, wenn es klingelt das Bild der Überwachungskamera angezeigt bekommt. Seit einigen Tagen ...

Viren und Trojaner
Avira macht Prüfung nicht
Frage von MWTUJEViren und Trojaner2 Kommentare

Hallo Leute, seit Mitte Februar soll jeder PC bei uns in der Firma um 18 Uhr eine vollständige Systemprüfung ...

Neue Wissensbeiträge
Windows Mobile

Support für Windows Mobile endet im Dezember 2019

Information von transocean vor 18 StundenWindows Mobile

Moin, Microsoft empfiehlt als Alternative den Umstieg auf iOS oder Android, wie man hier lesen kann. Gruß Uwe

Internet

Kommentar: Bundesregierung erwägt Ausschluss von Huawei im 5G-Netz - Unsere Presse wird immer sensationsgieriger

Information von Frank vor 2 TagenInternet5 Kommentare

Hier mal wieder ein schönes Beispiel für fehlgeleiteten Journalismus und Politik zugleich. Da werden aus Gerüchten plötzlich Fakten, da ...

Windows 10

Netzwerk-Bug in allen Windows 10-Versionen durch Januar 2019-Updates

Information von kgborn vor 2 TagenWindows 101 Kommentar

Nur ein kurzer Hinweis für Admins, die Windows 10-Clients im Portfolio haben. Mit den Updates vom 8. Januar 2019 ...

Windows 10

Windows 10 V1809: Rollout ist gestartet - kommt per Windows Update

Information von kgborn vor 3 TagenWindows 102 Kommentare

Eine kurze Information für die Admins, die Windows 10 im Programm haben. Microsoft hat die letzte Baustelle (die Inkompatibilität ...

Heiß diskutierte Inhalte
TK-Netze & Geräte
TAPI auf einem Win2016Server installieren und einrichten
Frage von wstabelTK-Netze & Geräte32 Kommentare

Hallo liebe Admins, ich habe folgende Situation: 1 Windows Server 2016 Standard als DC 1 SNOM 710 IP-Telefon 1 ...

Off Topic
Darf ich ein Forum erstellen das Produkte eines Herstellers betrifft?
Frage von cyberwallOff Topic9 Kommentare

Hallo Community, ich habe da eine "rechtliche" bzw. allgemeine Frage zum erstellen von Foren. Darf ich als "normale Person" ...

DNS
SFTP über DynDNS nicht OK - über ext. IP funktioniert es
Frage von C.MorgensternDNS8 Kommentare

Hallo zusammen! Ich habe Probleme beim SFTP Zugriff auf eine Linux Maschine vom WAN aus über eine DynDNS Adresse. ...

Router & Routing
Unbekannte IPv4 Adresse im Routerprotokoll(Portweiterleitung)
gelöst Frage von tklustigRouter & Routing7 Kommentare

Hallo Leute, folgender Screenshot(ScanVersusPortForwarding.jpg) zeigt die im Routerprotokoll aufgezeigten Portweiterleitungen und alle von einem IPScanner eruierten IPv4 Adressen in ...