
30190
22.05.2006, aktualisiert am 30.05.2006
Home-Shares aufräumen
User Home-Shares anhand existierender Domain-User aufräumen (löschen).
Hallo an alle,
seit einiger Zeit habe ich die Vermutung dass einige Verzeichnisse auf unserem Home-Share Server (Win2003) nicht mehr aktuell sind.
Damit meine ich dass die User in der Domäne überhaupt nicht mehr existieren.
Gibt es eine einfache Möglichkeit die existierenden User zu ermitteln - die Homeshares auslesen (sind im Profil angegeben, nicht per *.bat oder *.kix) - die "benötigten" Home-Shares gegen eine Liste der vorhandenen laufen zu lassen und alle Home-shares zu nicht existenten Usern anzuzeigen?
Klingt doch eingentlich sehr einfach - ich hab nur keine Startvorstellung. Leider kann ich selber kein VBS und möchte damit meine vielbeschäftigten Kollegen nicht nerven. Ich würde einen Versuch per PHP starten da ich dies kann
ist aber nicht wirklich sinnvoll in dieser angelegenheit wie ich finde.
FYI:
ca. 3500 User
Windows 2003 Domain
PS: Ich kann mir nicht vorstellen dass dieses Problem noch kein Anderer hatte. Vielen lieben Dank für jede Hilfe und / oder Info!!
Cheers
Nils
Hallo an alle,
seit einiger Zeit habe ich die Vermutung dass einige Verzeichnisse auf unserem Home-Share Server (Win2003) nicht mehr aktuell sind.
Damit meine ich dass die User in der Domäne überhaupt nicht mehr existieren.
Gibt es eine einfache Möglichkeit die existierenden User zu ermitteln - die Homeshares auslesen (sind im Profil angegeben, nicht per *.bat oder *.kix) - die "benötigten" Home-Shares gegen eine Liste der vorhandenen laufen zu lassen und alle Home-shares zu nicht existenten Usern anzuzeigen?
Klingt doch eingentlich sehr einfach - ich hab nur keine Startvorstellung. Leider kann ich selber kein VBS und möchte damit meine vielbeschäftigten Kollegen nicht nerven. Ich würde einen Versuch per PHP starten da ich dies kann
FYI:
ca. 3500 User
Windows 2003 Domain
PS: Ich kann mir nicht vorstellen dass dieses Problem noch kein Anderer hatte. Vielen lieben Dank für jede Hilfe und / oder Info!!
Cheers
Nils
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 32992
Url: https://administrator.de/forum/home-shares-aufraeumen-32992.html
Ausgedruckt am: 15.05.2025 um 02:05 Uhr
6 Kommentare
Neuester Kommentar
Hm,
mit VBS kenne ich mich auch nicht so aus, aber mit einer Liste der User und einer Schleife kannst Du die Basisverzeichnisse mit der Zeile
net user HansDampf /Domain | find "Basisverzeichnis"
auslesen. Jetzt noch gegenprüfen und das wars
Sorry, mehr bekomme ich auf die Schnelle nicht zusammen.
Gruß,
Thomas
mit VBS kenne ich mich auch nicht so aus, aber mit einer Liste der User und einer Schleife kannst Du die Basisverzeichnisse mit der Zeile
net user HansDampf /Domain | find "Basisverzeichnis"
auslesen. Jetzt noch gegenprüfen und das wars
Sorry, mehr bekomme ich auf die Schnelle nicht zusammen.
Gruß,
Thomas
Hi,
also ich meinte schon automatisiert ...
- eine Lister der User erstellen
- eine Liste aller Homeverzeichnisse erstellen
- dann pro User aus der Userliste das Homeverzeichnis mit der Befehlszeile die ich Dir geschrieben habe auslesen und vergleichen ob dieser Pfad in der Liste der Homeverzeichnisse steht. Wenn ja, diese Zeile aus der Liste löschen. Somit wird die Liste immer kürzer und Du hast zum Schluss die Verzeichnisse, welche keinem User zugeordnet sind.
Per Batch bin ich leider nicht so fit dass ich das mit der Schleife grad so aus dem Ärmel schütteln könnte. Persönlich würde ich so was in KIX schreiben.
Der einzige bist Du sicher nicht der das Problem hat, aber gerade bei der Anzahl der User müsste es halt irgendwie geregelt sein, dass wenn ein User gelöscht wird, auch das Homeverzeichnis, das Profil, das Postfach, ... mit gelöscht wird.
Und wenn man Altlasten beseitigen muss, ist das halt 1x Fleissarbeit, entweder ein Script zu schreiben oder es von Hand zu machen.
Versuch mal ob Du weiterkommst, wenn nicht melde Dich nochmal.
Gruß,
Thomas
also ich meinte schon automatisiert ...
- eine Lister der User erstellen
- eine Liste aller Homeverzeichnisse erstellen
- dann pro User aus der Userliste das Homeverzeichnis mit der Befehlszeile die ich Dir geschrieben habe auslesen und vergleichen ob dieser Pfad in der Liste der Homeverzeichnisse steht. Wenn ja, diese Zeile aus der Liste löschen. Somit wird die Liste immer kürzer und Du hast zum Schluss die Verzeichnisse, welche keinem User zugeordnet sind.
Per Batch bin ich leider nicht so fit dass ich das mit der Schleife grad so aus dem Ärmel schütteln könnte. Persönlich würde ich so was in KIX schreiben.
Der einzige bist Du sicher nicht der das Problem hat, aber gerade bei der Anzahl der User müsste es halt irgendwie geregelt sein, dass wenn ein User gelöscht wird, auch das Homeverzeichnis, das Profil, das Postfach, ... mit gelöscht wird.
Und wenn man Altlasten beseitigen muss, ist das halt 1x Fleissarbeit, entweder ein Script zu schreiben oder es von Hand zu machen.
Versuch mal ob Du weiterkommst, wenn nicht melde Dich nochmal.
Gruß,
Thomas
Hi Nils,
falls Du es noch nicht selbst gelöst hast ... ich hatte Langeweile
... hier eine Lösung als KIX-Script:
Du musst nur ganz oben den Pfad eintragen, in dem die Homeverzeichnisse liegen.
Das Script liest aus der Benutzerverwaltung von allen Usern den Pfad des Basisverzeichnisses aus. Dann erstellt es eine Liste aller auf dem Server vorhandenen Homeverzeichnisse in %Temp%. Alternativ kannst Du diese Datei auch selbst anlegen und den Teil des Scripts auskommentieren, wenn Du mehr als ein Pfad hast an dem die Homeverzeichnisse liegen.
Als nächstes vergleicht das Script diese vorhandenen Verzeichnisse mit allen Pfaden die es aus der Benutzerveraltung ausgelesen hat. Wenn es einen Pfad nicht findet (sprich kein User hat in eingetragen) landet der Pfadname in einer Text-Datei direkt auf Laufwerk C: .
Diese kannst Du Dir dann mal vornehmen und schauen ob sie wirklich weg können.
Gruß,
Thomas
falls Du es noch nicht selbst gelöst hast ... ich hatte Langeweile
Break on
$Homepfad="\\Server1\Home\"
; Homeverzeichnisse aus ADS auslesen
$rc=GetUserHome(@DOMAIN)
; Liste der vorhandenen Home-Verzeichnisse erstellen
$l3=FreeFileHandle()
$rc=Open($l3,"%TEMP%\Vorhandene_Verzeichnisse.txt",5)
$FileName = Dir($Homepfad)
While $FileName <> "" AND @ERROR = 0
If $Filename <> "." AND $FileName <> ".."
$rc=WriteLine($l3,$Homepfad+$FileName+@CRLF)
EndIf
$FileName = Dir()
Loop
$rc=Close($l3)
; Einträge vergleichen
Del "C:\nicht_eingetragene_Verzeichnisse.txt"
$l4=FreeFileHandle()
$rc=Open($l4,"%TEMP%\Vorhandene_Verzeichnisse.txt",2)
$l5=FreeFileHandle()
$rc=Open($l5,"C:\nicht_eingetragene_Verzeichnisse.txt",5)
$line=ReadLine($l4)
While @ERROR=0
$merker=0
For $i = 0 to Ubound($Home)
If $Home[$i]=$line
$merker=1
EndIf
Next
If $merker=0 ; keine Übereinstimmung gefunden
$rc=WriteLine($l5,$line+@CRLF) ; in Liste schreiben
EndIf
$line=ReadLine($l4)
Loop
$rc=Close($l4)
$rc=Close($l5)
Del "%TEMP%\Vorhandene_Verzeichnisse.txt"
Exit
Function GetUserHome ($DomainName)
Dim $UHome[10000]
$Domain = GetObject("WinNT://" + $DomainName + ",domain")
$Container = $Domain
For Each $User In $Container
If $User.Class = "User"
$UHome[$x] = $User.HomeDirectory
$x = $x + 1
EndIf
Next
ReDim Preserve $UHome[$x - 1]
$Home = $UHome
$Domain = 0
$Container = 0
EndFunction
Du musst nur ganz oben den Pfad eintragen, in dem die Homeverzeichnisse liegen.
Das Script liest aus der Benutzerverwaltung von allen Usern den Pfad des Basisverzeichnisses aus. Dann erstellt es eine Liste aller auf dem Server vorhandenen Homeverzeichnisse in %Temp%. Alternativ kannst Du diese Datei auch selbst anlegen und den Teil des Scripts auskommentieren, wenn Du mehr als ein Pfad hast an dem die Homeverzeichnisse liegen.
Als nächstes vergleicht das Script diese vorhandenen Verzeichnisse mit allen Pfaden die es aus der Benutzerveraltung ausgelesen hat. Wenn es einen Pfad nicht findet (sprich kein User hat in eingetragen) landet der Pfadname in einer Text-Datei direkt auf Laufwerk C: .
Diese kannst Du Dir dann mal vornehmen und schauen ob sie wirklich weg können.
Gruß,
Thomas
Hi,
eine Variante per Batch. Die folgendermassen funktioniert.
Aus einer OU im AD werden die Usernamen exportiert. (Userlist.txt)
Es wird geprüft, ob der jeweilige Nutzer ein Homeverzeichnis hat.
Die Verzeichnise die keinen Besitzer haben werden gemeldet. Ein del muss dann um es scharf zu machen eingebaut werden.
Diese Lösung geht davon aus das die Userverzeichnisse
- in einem Ordner liegen.
- und mit dem Sam Accountnamen übereinstimmen.
Läuft nur auf einem Windows Server ab 2000.
Gruß Miguel
eine Variante per Batch. Die folgendermassen funktioniert.
Aus einer OU im AD werden die Usernamen exportiert. (Userlist.txt)
Es wird geprüft, ob der jeweilige Nutzer ein Homeverzeichnis hat.
Die Verzeichnise die keinen Besitzer haben werden gemeldet. Ein del muss dann um es scharf zu machen eingebaut werden.
Diese Lösung geht davon aus das die Userverzeichnisse
- in einem Ordner liegen.
- und mit dem Sam Accountnamen übereinstimmen.
Läuft nur auf einem Windows Server ab 2000.
set hpfad=d:\users
set logpfad=d:\log
REM Variablen setzen fuer AD
REM DC Namen
set domainc=serverA
REm Domänenname
set dc1=wurst
set dc2=de
REM OU Informationen
set ou1=Oben
set ou2=Users
ldifde -f %logpfad%\ExportUsers.ldf -s "%domainc%" -d "ou=%ou2%,ou=%ou1%,dc=%dc1%,dc=%dc2%" -p subtree -r "(objectClass=person)" -l "SamAccountName" >> %logpfad%\log.txt
for /f "tokens=2 delims= " %%a in ('find "sAMAccountName:" %logpfad%\ExportUsers.ldf ') do (echo %%a >> %logpfad%\userlist.txt)
REM Verzeichnisse ohne Besitzer finden
for /f %%b in ('dir /b %hpfad%\*.* /a:D') DO findstr %%b %logpfad%\userlist.txt || echo %%b hat keinen Besitzer >> %logpfad%\loeschen.txt
REM User ohne HOmeverzeichnis finden
for /f %%b in (%logpfad%\userlist.txt) do (IF exist %hpfad%\%%b (echo User %%b hat Userverzeichnis unter %hpfad% >> %logpfad%\verzeichnis.txt) else echo User %%b hat kein Userverzeichnis unter %hpfad% >> %logpfad%\verzeichnis.txt)
Gruß Miguel