Datei-Besitz automatisiert übernehmen (VBS)
Ursprünglich wurde dieses Skript zu dem Zweck erstellt, die von „Zombie-Usern“ (gelöschten Benutzern) belegten Kontingente auf Fileservern, durch ändern des Besitzers, auf einen aktiven Benutzer zu übertragen (daher der Name…). Es sucht alle Dateien unterhalb des angegebenen Pfades – ggf. gefiltert nach aktuellem Besitzer/Dateityp – und ordnet diese auf Wunsch mit Hilfe von icacls.exe einem neuen Benutzer zu.
Ausführungsoptionen
Das Skript kann auf zwei Wegen mit Dateien „gefüttert“ werden:
Wird dem Skript nur ein Pfad mitgegeben, durchsucht es im Dateisystem alle Ordner und Dateien darunter:
QuotaZombieHunter.vbs -p <Path> [-u <Username>][-t <FileExtension>] [-n <NewOwner>] [-l <LogPath>] [-g]
Bei Nutzung der Option -i liest das Skript die zu bearbeitenden Dateien aus einer Textdatei (bspw. einem zuvor erstelltem Log) ein:
QuotaZombieHunter.vbs -i <InputFile> [-p <Path>] [-u <Username>] [-t <FileExtension>] [-n <NewOwner>] [-l <LogPath>] [-g]
In beiden Fällen werden die Dateien nach den Filterkriterien (Unterordner von <Path>, aktueller Besitzer <UserName> und Dateiendung <FileExtension>) geprüft und in die Log-Datei geschrieben. Bei Bedarf kann auch direkt der Besitz durch einen anderen User (<NewOwner>) übernommen werden.
Bei Suche nach einer SID kann zusätzlich mit der Option -g versucht werden anhand des Datei-Autors zu ermitteln, von welchem Benutzer die Dateien ursprünglich stammten.
Beim einlesen aus einer Datei (-i) verlangsamen die Optionen -u und -g den Vorgang i.d.R. spürbar!
Parameter | Beschreibung | Default |
-i <InputFile> | Datei mit Liste von Dateien (bspw. zuvor erstelltes Log) Bsp.: -i D:\Logs\LOG_bistron.d.bistron.txt | – |
-p <Path> | Filter – Pfad Bsp.: -p D:\users | * |
-u <Username> | Filter – aktueller Besitzer (Domain\Username) Bsp.: -u bistron\user1 | * |
-t <FileExtension> | Filter – Dateiendung Bsp.: -t .doc | * |
-n <NewOwner> | Besitz neu zuordnen (Domain\Username) Bsp.: -n bistron\user2 | – |
-l <LogPath> | Pfad der Logdatei LOG_domain.username.txt: Ordnerpfad Bsp.: -l D:\Logs | <Pfad Skript>\LOG_domain.username.txt |
-g | Liste mit Datei-Autoren erstellen (USERS_username.txt) (ggf. nützlich falls nur noch die SID vorhanden ist) | Aus |
Die von Skript erstellte Log-Datei enthält zu jedem gefundenen Element den Dateipfad, die Größe in Bytes und bei Nutzung der Option -n den ErrorLevel, den icacls.exe bei Änderung des Besitzers zurückgegeben hat:
ErrorLevel | Beschreibung | mögl. Ursache |
0 | Erfolreich verarbeitet. | – |
5 | Zugriff verweigert. | Berechtigung des ausführenden Users ausreichend? |
112 | Es steht nicht genug Speicherplatz auf dem Datenträger zu Verfügung. | Kontingent <NewOwner> voll? |
1332 | Zuordnung von Kontennamen und Sicherheitskennungen wurden nicht durchgeführt. | <NewOwner> falsch? |
Anwendungsbeispiele
Besitzer übertragen
cscript.exe QuotaZombieHunter.vbs -p D:\users\ -u bistron\user1 -n bistron\user2 -t .xls
Der Besitz aller Excel-Dateien (.xls) des Users user1, die das Skript unterhalb von D:\users findet, wird an den User user2 übertragen.
Dateien von Benutzer suchen und Autoren auflisten
cscript.exe QuotaZombieHunter.vbs -p D:\users\ -u S-1-5-21-1234567890-123456789-12345678-1234 -l D:\ -g
Ergebnis ist ein Log unter D:\ mit allen Dateien, die dem gelöschten Benutzer S-1-5-21-12345…-1234 „gehören“; zusätzlich wird eine Liste mit möglichen Namen des Benutzers ausgegeben.
Dateien mit bestimmten Besitzer suchen anhand von Dateiliste
cscript.exe QuotaZombieHunter.vbs -i D:\LOG_bistron.user2.txt -p D:\users\ -n bistron\user1 -t .doc
Hier werden alle im Log gelisteten Word-Dateien, sofern sie unter D:\users liegen, dem neuen Besitzer user1 zugeordnet.
Da das Skript im Hintergrund mit dem Tool icacls.exe arbeitet kann es unter Windows Server 2003 dazu kommen, daß man trotz ausreichender Berechtigungen zur Änderung des Besitzers die Meldung „Zugriff verweigert“ erhält. Abhilfe schaffen sollte hier KB947870…
13. Februar 2015 um 22:34 Uhr - -
Kleines nettes Tool, das genau das macht, was es verspricht und mir sehr viel Arbeit abgenommen hat.
Ein winziger Bug: Dateien/Ordner, die Prozentzeichen im Namen enthalten, werden nicht korrekt verarbeitet. Grund: Im Script fehlt das notwendige Escaping der Shell-Metazeichen vor Aufruf von icacls.
Das ist zum Glück kein Problem – die betreffenden Files lassen sich mit einem REGEX aus dem Logfile fischen (error code=2) und nachträglich mit icacls bearbeiten.
15. Februar 2015 um 19:48 Uhr - -
Danke für den Hinweis; ist mir bisher noch nicht aufgefallen. Werde mal schauen, ob man das noch irgendwie in den Griff bekommt…