sysadmbonn
Goto Top

BGINFO Anzeige der Profilgröße

BGINFO nutzen um den User die Größe des Profilspeichers anzuzeigen.

Hallo,

ich nutze in unserer Domäne BGINFO um einige User und Maschinen Infos auf den Desktop "zu brennen". Nun möcht ich den Usern die Größe Ihres Profilspeichers anzeigen, damit sie selbst, und ich wenn ich davor sitze, sehen wie viel Platz sie verbrauchen. Soll eine Art erste Stufe der Umgewöhung sein damit ich später die Profilgrößen beschränken kann.

Kann ich das über WMI auslesen? Mit VB-Script bin ich nicht so gut. Da müßte ich schon Hilfe bekommen ...

Danke ...

Content-Key: 117680

Url: https://administrator.de/contentid/117680

Printed on: April 19, 2024 at 04:04 o'clock

Member: Logan000
Logan000 Jun 08, 2009 at 10:09:55 (UTC)
Goto Top
Moin Moin

Das solte auch ohne WMI per vbs klappen, etwa so:
Dim FSO
Dim Folder
Set FSO = CreateObject("Scripting.FileSystemObject")  
Set Folder = FSO.GetFolder("C:\Dokumente und Einstellungen\%Username%\")  
ResultByte = Folder.Size
ResultKB = ResultByte/1024
ResultMB = ResultKB/1024
ResultGB = ResultMB/1024

msgbox ResultByte & " byte" & vbcrlf & ResultKB & " Kb" & vbcrlf & ResultMB & " Mb" & vbcrlf & resultgb & " Gb"  

Gruß L.
Member: sysadmbonn
sysadmbonn Jun 08, 2009 at 10:39:06 (UTC)
Goto Top
Hallo,

danke für die schnelle Antwort.

Habe den Quelltext von oben in eine Textdatei kopiert (mit PSPad) und als *.vbs abgespeichert. Nach dem Aufrufen der Datei kommt folgende Fehlermeldung:

Zeile 10
Zeichen 81
Fehler Anweisungsende erwartet
Code 800A0401
Quelle Kompilierungsfehler in Microsoft VBScript

???
Hab den Fehler, es fehlte ein Anführungszeichen.

Jetzt meckert er aber er hätte den Pfad nicht gefunden zu den Userprofilen. Habe den mal auf was anders umgelegt (C:\i386) und siehe da es geht.
Aber wie kommt das dann in mein BGInfo? Kann ich da die Variable ResultGB übergeben? Und läßt die sich vieleicht auf zwei Stellen nach Komma kürzen?

Danke, danke, danke ...

face-smile
Member: sysadmbonn
sysadmbonn Jun 08, 2009 at 10:57:49 (UTC)
Goto Top
So,

nach einigem Experimentieren: Er nimmt die Varible "%username%" nicht an. Welche für mich ja nun sehr wichtig ist, da das ganze ja im Kontext des Users laufen soll ...

???
Member: Logan000
Logan000 Jun 08, 2009 at 11:23:04 (UTC)
Goto Top
Moin Moin

Er nimmt die Varible "%username%" nicht an.
Sorry, mein Fehler. VBS kennt diese Form der Umgebungsvariablen nicht. ich wollte damit nur andeuten das Du dort den Benutzernamen angeben musst.

Denn kannst du entweder so auslesen und Dir dann deinen Profilepfad zusammen klöppeln:
Set objNetwork = CreateObject("Wscript.Network")  
szUser =objNetwork.UserName
msgbox szUser
profile = "C:\Dokumente und Einstellungen\ & szUser & "\"  

Oder Du liest Ihn so direkt aus:
Set WshShell = WScript.CreateObject("WScript.Shell")  
Set objEnv = WshShell.Environment("PROCESS")  
profile = objEnv("USERPROFILE")  
msgbox profile

Gruß L.

/EDIT

Ich hab beschlossen das mir diese Information auch in BGInfo sehr nützlich erscheint.
Hier mein vollständiges Skript:
Set FSO = CreateObject("Scripting.FileSystemObject")   
Set WshShell = CreateObject("WScript.Shell")  
Set objEnv = WshShell.Environment("PROCESS")  
profile = objEnv("USERPROFILE")  
If Right(profile, 1) <> "\" Then profile = profile & "\"  
Set Folder = FSO.GetFolder(profile)
ResultByte = Folder.Size
ResultKB = Round(ResultByte/1024,2)
ResultMB = Round(ResultKB/1024,2)
ResultGB = Round(ResultMB/1024,2)
If len(ResultByte)<= 6 Then Result = ResultByte & " Byte"  
If len(ResultByte)> 6 Then Result = ResultKB & " KB"  
If len(ResultKB)> 6 Then Result = ResultMB & " MB"  
If len(ResultMB)> 6 Then Result = ResultGB & " GB"  
' msgbox result ' nur zum testen  
Echo result     ' Nur für BGINFO  

/EDIT
Member: sysadmbonn
sysadmbonn Jun 08, 2009 at 12:41:59 (UTC)
Goto Top
Vielen lieben Dank!!! Das hätte ich nie hinbekommen. Ich finde einfach nicht die Zeit mich in VB einzuarbeiten ...

Und wie übergebe ich jetzt die Varibale "result" an BGInfo? Wenn ich das Skript durchlaufen lasse wird keine Variable erzeugt die mit Set auslesen oder mit Echo anzeigen lassen kann.

Noch mals vielen Dank. Ich bin fast am Ziel ...

face-smile A.
Member: Logan000
Logan000 Jun 08, 2009 at 13:08:51 (UTC)
Goto Top
Moin

Du kannst das Skript in BGinfo über Custom / New direkt hinterlegen.
Option vb Skript auswählen.
Skriptpfad (UNC Pfad) angeben und als Identifer einen ausagekräftigen namen angeben (z.B. Profil Size oder so).
BGInfo liest dann das ECHo in Zeile 16 aus und zeigt es an.

Gruß L.
Member: masterbonsai
masterbonsai Jun 08, 2009 at 13:33:47 (UTC)
Goto Top
hallo logan,

habe den thread mit verfolgt, da mihc das thema auch interessiert hat..

dein script funktioniert toll, einen kleinen schönheitsfehler hat die sache jedoch..

du liest den profilpfad aus.. und hier kommt bei mir z.b. 2,3GB raus.. das eigentliche (servergespeicherte) profil hat "nur" 200MB da ja LOKALE EINSTELLUNGEN usw. nicht berücksichtigt werden sollten...

ich denke, dass das die aufgabe war..oder?

woher nimmt windows (ARBEITSPLATZ, EIGENTSCHAFTEN, ERWEITERT) die informationen her? um die gehts doch im kern...

gruss
jochen
Member: Logan000
Logan000 Jun 08, 2009 at 14:01:12 (UTC)
Goto Top
Moin Jochen

Das Skript ermittelt den Pfad des "verwendten" Profils (das ist eigentlich immer lokal, egal ob die Profile servergespeichet sind oder nicht) und ermittelt die Ordnergröße.

Wenn du nur die Größe des Servergespeicherten Profils anzeigen möchtest, würde ich auch genau das Abfragen. Also in etwa so:
Set objNetwork = CreateObject("Wscript.Network")   
Set FSO = CreateObject("Scripting.FileSystemObject")    
Set Folder = FSO.GetFolder("\\Fileserver\ProfilShare\" & objNetwork.UserName)   
result = Folder.FileSize
....

woher nimmt windows (ARBEITSPLATZ, EIGENTSCHAFTEN, ERWEITERT) die informationen her?
Ich bin nicht ganz sicher aber die stehen wohl unter folgendem Regkey:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList

Gruß L.
Member: sysadmbonn
sysadmbonn Jun 08, 2009 at 16:11:42 (UTC)
Goto Top
Hallo,

was Jochen da schreibt stimmt natürlich. Es geht mir ja um die Servergespeicherten. Aber wie üblich denkt man (diesmal ich) nicht weit genug.

Vielleicht sollten wir das ganze etwas anders aufziehen?
Also mir würde ein Skript reichen, das frühmorgens auf dem Server läuft und die dann aktuellen Werte in eine was auch immer (Am geilsten natürlich SQL) Datei schreibt.
Könnte man diese dann im Logon als Enviroment Varible schreiben?
So hätte man mehrere Möglichkeiten diese weiter zu verarbeiten.

Oder habt Ihr nen anderen Ansatz?

Cheers A.
Member: Logan000
Logan000 Jun 09, 2009, updated at Oct 18, 2012 at 16:38:23 (UTC)
Goto Top
Moin Moin

Es geht mir ja um die Servergespeicherten. Aber wie üblich denkt man (diesmal ich) nicht weit genug.
Vielleicht sollten wir das ganze etwas anders aufziehen?
Also mir würde ein Skript reichen, das frühmorgens auf dem Server läuft und die dann aktuellen Werte in eine was auch immer (Am geilsten natürlich SQL) Datei schreibt.
Oder habt Ihr nen anderen Ansatz?
Jupp. Ich würde von einem Serverskript abraten. Das könnte schnell mit Berechtigungen kollidieren.
Ich wüder das Skript leicht anpassen und weiterhin BGInfo diese informationen im Benutzerkontext holen lassen.
Das Skript sollte dann etwa so aussehen:
Set objNetwork = CreateObject("Wscript.Network")   
Set FSO = CreateObject("Scripting.FileSystemObject")    
Profile = "\\Fileserver\ProfilShare\" \" & objNetwork.UserName  
If Right(profile, 1) <> "\" Then profile = profile & "\"  
Set Folder = FSO.GetFolder(profile)
ResultByte = Folder.Size
ResultKB = Round(ResultByte/1024,2)
ResultMB = Round(ResultKB/1024,2)
ResultGB = Round(ResultMB/1024,2)
If len(ResultByte)<= 6 Then Result = ResultByte & " Byte"  
If len(ResultByte)> 6 Then Result = ResultKB & " KB"  
If len(ResultKB)> 6 Then Result = ResultMB & " MB"  
If len(ResultMB)> 6 Then Result = ResultGB & " GB"  
' msgbox result ' nur zum testen  
Echo result     ' Nur für BGINFO  

Was das Thema Datenbank angeht, das kann BGInfo auch.
Schau Dir mal dieses Tuitorial an :

Gruß L.
Member: Destry
Destry Jun 18, 2009 at 14:47:30 (UTC)
Goto Top
Hallo sysadmbonn,

ich weiss nicht ob es hilft, aber:

Es gibt in den Gruppenpolicies unter "Benutzerkonfiguration -> Administrative Vorlagen -> System/Benutzerprofile" alle notwendigen Einstellungen um Nutzerprofile und deren Größe zu regeln.

Nach Aktivierung dieser Regel erscheint beim Nutzer in der Taskleiste unten rechts ein Symbol, ein kleiner Monitor, welches alle Informationen enthält.

Für den Anfang würde ich die Größe des Profils sehr großzügig auslegen, damit Du siehst wie es funktioniert und welche Größen vorhanden sind. Nach und nach kannst Du die Größe dann runter drehen und sehen was passiert.

Gruss,
Destry