derpue
Goto Top

Genutzten Filespace unterschiedlicher Verzeichnisse anzeigen lassen

Hallo zusammen,

ich stehe mal wieder vor einer Aufgabe, in der google mich nicht weiterbringt.
Wir betreiben hier einen Fileserver (MS W2k8R2) mit insg. 14 Laufwerken. In diesen Laufwerken sind die verschiedensten Abteilungen vertreten, sowie einzelne Laufwerke für die Usherhomes der Anwender.
Ich soll nun den genutzten Festplattenplatz der einzelnen Abteilungen berechnen inkl. der Homelaufwerke (die Homelaufwerke sind nicht Abteilungsmäßig getrennt)
Wäre super wenn mir jemand ein Tool empfehlen kann, in dem ich einstellen kann, welche Verzeichnisse auf genutzten Speicherplatz untersucht werden, um am besten das ganze in eine xls, txt oder anderes Format abspeichert. Am besten wär´s wenn ich mir nur einmal die Arbeit mache, sämtliche Homelaufwerke und die unterschiedlichen Verzeichnisse der einzelnen Abteilungen festzulegen und mir die konfig. wegspeichern kann, damit ich zum nächsten mal dieser wieder nutzen kann (Soll 1 mal monatlich durchgeführt werden.)
Jedoch soll dies auch für den anderen Abteilungen umgesetzt werden.
Hab zwar schin echt viele Tools getestet komme aber nicht zu einem für mich akzeptablen Ergebnis.

Vorab schonmal vielen Dank an Alle, bin für jeden Tipp dankbar.

Viele Grüße
DerPue

Content-Key: 211806

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

Ausgedruckt am: 29.03.2024 um 14:03 Uhr

Mitglied: Mondragor
Mondragor 18.07.2013 um 10:08:29 Uhr
Goto Top
Hallo,

ich weiß nicht, ob ich deine Frage jetzt richtig verstehe, aber wie sieht es denn mit "Treesize" aus?
Mitglied: DerPue
DerPue 18.07.2013 um 10:13:00 Uhr
Goto Top
Hallo Mondragor,

danke für deine schnelle Antwort.
TreeSize habe ich schon getestet.... ist allerdings nicht Zielführend.....
Hab es vielleicht umständlich ausgedrückt....

möchte also die Größe von Laufwerk E: der Verzeichnisse X,Y,Z anzeigen lassen, wobei aus dem Verzeichnis A nur die Unterverzeichnisse B und C ausgwählt werden sollen. + von Laufwerk H: die Unterverzeichnisse 1,2,3,4,5,6,7,9,10,12,16,17,18,19, (Homelaufwerke).
Willa lso im Prinzip gaaanz viele Verzeichnisse auswählen, das Tool bestimmt den kompletten genutzten Platz der ausgewählten Verzeichnisse...

Hoffe ich hab jetzt nich noch mehr Verwirrung gestiftet ;)
Mitglied: Mondragor
Mondragor 18.07.2013 um 10:17:03 Uhr
Goto Top
also im Grunde so als würde man für jedes dieser Verzeichnisse über "Eigenschaften" die Größe berechnen lassen und dann ggf. zusammen rechnen?
Mitglied: DerPue
DerPue 18.07.2013 um 10:23:07 Uhr
Goto Top
genau so....
das habe ich bisher gemacht... dann das ganze in eine Exel Tabelle geschrieben... das ist halt nur sehr zeitaufwendig und macht nicht sonderlich spass ;)
Mitglied: falscher-sperrstatus
falscher-sperrstatus 18.07.2013 um 10:25:15 Uhr
Goto Top
Gut, warum dann nicht TreeSize, getfoldersize ovgl und du nutzt entweder einen MainFrame inkludierte Überschlagstechnik oder ggf einen Taschenrechner/Excelsheet dafür?

Obiges gibt dir die Rückgabewerte in Bezug auf die Größe und du wählst entsprechend die zusammenzufassenden Bestandsgrößen aus und rechnest es zusammen. So schwer sollte das nicht sein.
Mitglied: Mondragor
Mondragor 18.07.2013 um 10:27:01 Uhr
Goto Top
Nun, mit Powershell kannst Du das auch machen.
Mitglied: Mondragor
Mondragor 18.07.2013 aktualisiert um 11:58:53 Uhr
Goto Top
Für ein einzelnes Verzeichnis auf C:
echo "" > verzeichnisse.csv  
$colItems = (Get-ChildItem C:\Beispielverzeichnis -recurse | Measure-Object -property length -sum)
echo "Beispielverzeichnis - $("{0:N2}" -f ($colItems.sum / 1MB) + " MB")" >> verzeichnisse.csv  
Inhalt "verzeichnisse.csv":
Verzeichnisname - 478,23 MB

Vergleich Anzeige auf Eigenschaften des Verzeichnisses:
478 MB
Zeile 1 legt quasi die "verzeichnisse.csv" einmal neu an bzw. entleert sie quasi.
Zeile 2-3 siehe Code einmal für alle Verzeichnisse.
Das Ganze in eine .ps1 datei und dann laufen lassen?
"Beispielverzeichnis" siehe Zeile 3 jeweils nach deinem Gutdünken benennen (für jedes weitere...)
Die Datei dann als "CSV" mit '-' als trenner... nur sone Idee

Und für die Zusammenrechnung dann entweder excel nutzen oder mit powershell rechnen ...
$colItem.sum ist die summierte Byteanzahl aller Objekte in einem Verzeichnis.
Wenn du die Größere mehrerer aber nicht aller Verzeichnisse zusammen rechnen willst, die Gesamtanzahl deiner gewünschten
Verzeichnisse aber überschaubar bleibt, dann einfach für jedes zu untersuchende (Unter)verzeichnis eine Variable beschreiben:
z.B.
... Zeile 2 und 3 für das erste Verzeichnis...
$variable1=$colItem.sum
(danach steht die Größe des vorherig untersuchten Verzeichnisses in $variable1)
...Zeile 2 und 3 für das zweite Verzeichnis
$variable2=$colitem.sum
$variable2 enthält Größe von Verzeichnis 2.
...
...
Später:
$groesseAbteilung1 = $($var1 + $var2)
Diese dann formatiert in MB ausgeben:

echo "Beispielverzeichnis - $("{0:N2}" -f ($groesseAbteilung1 / 1MB) + " MB")" >> verzeichnisse.csv
Mitglied: DerPue
DerPue 18.07.2013 um 11:53:44 Uhr
Goto Top
Hallo Mondrager,

super mit der PS klappt es soweit und bringt mich ein riesen Stck weiter, Danke.Ist nur die Frage, ob man das Verzeichnis in Spalte A eintragen kann und die Größe in Spalte B... das würde es am Ende zum zusammenrechnen wesentlich einfacher machen.
also muss ich im Prinzip die Zeile 2 und 3 für jedes einzelne gewünschte Oberverzeichnis wiederholen... Berichtige mich bitte wenn ich falsch liege...
aber nachdem ich das grad getestet habe... wird mir immer nur ein Ergebnis ausgegeben von einem Verzeichnis
Mitglied: Mondragor
Mondragor 18.07.2013 aktualisiert um 12:15:16 Uhr
Goto Top
Habe meinen letzten Eintrag nochmal aktualisiert. Da steht nun auch, wie Du berechnen und entsprechend ausgeben kannst.

Falls du in andere Größeneinheiten, wie GB oder TB umrechnen willst, einfach im Quelltext MB durch GB / TB ersetzen.
Die Umrechnung erfolgt in tatsächlicher 1024er Division. so sind 8 Byte 0.000007629395 MByte.

Falls Du dabei mehr Nachkommastellen möchtest, in "{0:2N}" die 2 durch die gewünschte Stellenanzahl ersetzen.

Bedenke, wenn Du jedes mal $colItem benutzt, überschreibst du die Variable $colItem für jedes Verzeichnis.
Da Du bei den Verzeichnissen nur die Größe willst, müsste es reichen, wenn du siehe oben (mein letzter Beitrag) nur $colItem.sum
in eine entsprechende Variable zwischenspeicherst. Diese dann genauso ausgeben wie oben, nur eben statt "$colItems.sum" dann eben
"$variable1" (ohne die "") oder welche eben dran is und in die csv mit rein soll.


Was genau meinst Du mit Spalte 1 und Spalte 2? (Reihenfolge?)
Mitglied: DerPue
DerPue 18.07.2013 um 12:20:33 Uhr
Goto Top
mhhh...
so richtig klappt das noch nicht...
erhalte immer nur den Wert des zuletzt angegebenen Verzeichnisses...
(Mit Spalte A und B meine ich die Spalten in der Exeltabelle.)
So sieht das bis jetzt aus:

echo "" > verzeichnisse.csv
$colItems = $variable1
$colItems = (Get-ChildItem C:\temp -recurse | Measure-Object -property length -sum)
echo "temp - $("{0:N2}" -f ($colItems.sum / 1MB) + " MB")" > verzeichnisse.csv
$colItems = $variable2
$colItems = (Get-ChildItem C:\temp2 -recurse | Measure-Object -property length -sum)
echo "temp2 - $("{0:N2}" -f ($colItems.sum / 1MB) + " MB")" > verzeichnisse.csv
pause


und in der csv habe ich lediglich temp2 mit der für temp2 genutzten Größe angezeigt...
Mitglied: DerPue
DerPue 18.07.2013 um 12:34:02 Uhr
Goto Top
Ah Ok Fehler erkannt... ;)

echo "" > verzeichnisse.csv
#$colItems = $variable1
$colItems = (Get-ChildItem C:\temp -recurse | Measure-Object -property length -sum)
echo "temp - $("{0:N2}" -f ($colItems.sum / 1GB) + " GB")" >> verzeichnisse.csv
#$colItems = $variable2
$colItems = (Get-ChildItem C:\temp2 -recurse | Measure-Object -property length -sum)
echo "temp2 - $("{0:N2}" -f ($colItems.sum / 1GB) + " GB")" >> verzeichnisse.csv

Nun werden mir beide Verzeichnisse in der csv ausgegeben....
...nun möchte ich die nur noch Spaltenmäßig trennen, d.h.
In Spalte A = Verzeichnisname
In spalte B = Größenangabe
Mitglied: Mondragor
Mondragor 18.07.2013 aktualisiert um 12:43:39 Uhr
Goto Top
also öffne mal mit openoffice, der erkennt in csv ein excel format und normal auch den Trenner.
Falls Du Verzeichnisnamen mit "-" hast, ist das natürlich kein guter Trenner.
In dem Fall einfach beim Echo vor und nach jeden Ausdruck ein \" setzen (wenn ich nicht irre.)
Dann wird "Verzeichnisname" und "478,23 MB" je in Anführungsstrichen stehen, aber das - nicht.
Alternativ ein Zeichen als Trenner nehmen, was nicht in Verzeichnissen vorkommen kann.

Wenns richtig angezeigt wird, in openoffice, dann einfach nach xls speichern...
Mitglied: DerPue
DerPue 18.07.2013 um 13:38:03 Uhr
Goto Top
openoffice kann ich leider nicht nutzen....
wird als software nciht freigegeben...
wie meisnt Du das mit " beim Echo vor und nach jeden Ausdruck ein \" setzen"?
Mitglied: Mondragor
Mondragor 18.07.2013 aktualisiert um 14:23:23 Uhr
Goto Top
Also, lass alles wies ist.
Nur kleine Änderung an der Zeile 3 für alle Verzeichnisse:
echo "temp;$("{0:N2}" -f ($colItems.sum / 1GB) + " GB")" >> verzeichnisse.csv
Es ändert sich also nur folgendes:
" - " wird in der Ausgabe zu ";"

Das ist die Formatierung, die Excel selbst nimmt, wenn man in csv speichert.
Das sollte es auch richtig öffnen.

P.S.: Ist das nicht herrlich, was man so alles selber erschaffen kann?
Mitglied: DerPue
DerPue 18.07.2013 um 15:17:59 Uhr
Goto Top
Hi Mondragor,

erstmal vielen lieben Dank für Deine Unterstützung und die mir geopferte Zeit ;)
Zunächst zu Deiner Frage... Ja es ist unglaublich was man alles aus dem nichts schaffen kann - allerdings muss ich dazu sagen, dass ich ohne Deine Hilfe nicht soweit gekommen wär.
Auch mit dem editieren der zeile 3 ändert sich nichts am Ergebnis es wird in die erste Spalte "Verzeichnisname" ";" und "Verzeichnisgröße" geschrieben.
eine Addition der Spaöte ist durch Autosumme nicht möglich.
Ich denke mal dass ich es so am besten gelöst habe, (zuminedst kann ich damit leben ist zwar nicht schön aber selten ;) )

echo "" > verzeichnisse.csv
$colItems = (Get-ChildItem C:\temp -recurse | Measure-Object -property length -sum)
echo "temp"
echo "$("{0:N3}" -f ($colItems.sum / 1GB))" >> verzeichnisse.csv

$colItems = (Get-ChildItem C:\temp2 -recurse | Measure-Object -property length -sum)
echo "temp2"
echo "$("{0:N3}" -f ($colItems.sum / 1GB))" >> verzeichnisse.csv

jetzt wird lediglich die Größe der Datei mit drei Nachkommastellen generiert. Dann nur noch alle alle geschriebenen Felder markieren und auf Autosumme klicken und das ergebnis ist für mich verfügbar.
Bin natürlich für weitere Anregungen offen, um das ganze auch schön zu machen, damit ich meinem Chef auch eine schöne Tabelle zeigen kann und ihm nicht nur die Daten "um die Ohren hauen" kann ;)

Aber vorab vielen Dank für die tolle Unterstützung

Viele Grüße
DerPue
Mitglied: Mondragor
Mondragor 18.07.2013 um 16:06:27 Uhr
Goto Top
okay, ich guck heut abend von zuhaus aus nochmal drüber und versuche es von meinem rechner zuhause, hab da auch excel.
Wenns da läuft, schick ich dir nochmal mein Script hier.
p.s.:
mit "code" in spitzen Klammern <> vor und "/code" in <> nach Quellcode erhältst Du folgende Formatierung:
 Quellcode 
Mitglied: Mondragor
Mondragor 18.07.2013 aktualisiert um 23:14:12 Uhr
Goto Top
SOOOOOOOO

ich habs (Beispiel von mir...)
#beginn
cd C:\Users\Mondragor\Desktop\
#Kopfzeile mit Spaltenbezeichnern in zeile 1:
echo "Verzeichnisname;Größe in GB" > .\verzeichnisse.csv  
#Jetzt das erste Verzeichnis C:\Users\Mondragor:
$colItems = (Get-ChildItem C:\Users\Mondragor -recurse | Measure-Object -property length -sum) 
    #in Variable $MondragorHome das .sum-Attribut abspeichern
$mondragorHome = $colItems.sum
#Ausgabe in Zeile 2:
echo "Mondragor;$("{0:N3}" -f ($colItems.sum / 1GB))" >> .\verzeichnisse.csv  
#
#Nun das zweite Verzeichnis: C:\Users\Mondragor\Desktop
$colItems = (Get-ChildItem C:\Users\Mondragor\Desktop -recurse | Measure-Object -property length -sum) 
    #in Variable $desktop das .sum-Attribut abspeichern
$desktop=$colItems.sum
#Ausgabe in Zeile3:
echo "Mondragor-Desktop;$("{0:N3}" -f ($colItems.sum / 1GB))" >> .\verzeichnisse.csv  
#Zusammenrechnen und in Zeile 4 der csv schreiben:
echo "Gesamt;$("{0:N3}" -f ($($mondragorHome + $desktop)/ 1GB))" >> .\verzeichnisse.csv  
#ende
Nach Ausführung sieht die verzeichnisse.csv so aus:
Verzeichnisname;Größe in GB
Mondragor;8,977
Mondragor-Desktop;6,476
Gesamt;15,452
Anmerkung:
(Überflüssig zu erwähnen, dass das Zusammenrechnen in diesem Beispiel keinen Sinn macht, da Desktop ein Unterverzeichnis von Mondragor ist.)
Die letzte Nachkommastelle bei der Powershell-Berechnung scheint falsch berechnet. Das liegt daran, dass wir hier die Bytes addieren.
Die Summe wird erst am Schluss auf die dritte Stelle nach dem Komma gerundet. Die beiden Zwischenausgaben sind bereits beide auf
die dritte Stelle gerundet, was insgesamt eine addierte Rundung ist, die im Ergebnis unter Umständen falsch wird.
Je mehr Summanden, desto größer die mögliche Abweichung, allerdings sollte / könnte es sich statistisch annährend aufheben...
!!!Das würde allerdings auch Excel so rechnen!!! (Die addierten Rundungen...)
Daher ist die Rundung bei der Berechnung der Größen im Powershell genauer. (Bytegenaue Addition und erst dann runden.)

Weiter mit der CSV:
Da die CSV aufm desktop liegt: rechte Maustaste darauf → bearbeiten → STRG + A → STRG + C (Inhalt nun im Zwischenspeicher)
Jetzt Excel öffnen:
oben links auf "Einfügen (schwarzer Pfeil darunter)" → Textkonvertierungs-Assistenten verwenden
Dann öffnet sich ein Fensterchen. Dies liest aus dem Zwischenspeicher und zeigt unten das Zwischenergebnis.
Schritt 1 von 3 - alles so lassen: getrennt, Windows ANSI → "Weiter"
Schritt 2 von 3 - Haken bei Leerzeichen raus, Haken bei Semikolon rein, Textqualifizierer: {Kein} → "Weiter"
Schritt 3 von 3 - Standard lassen → Weiter bzw. Fertig...
Nun noch schön machen mit Rahmen und so...
Ausdrucken, Chef zeigen, Lob empfangen (falls Chef gut gelaunt)
Fertig.

Jetzt muss ich dazu sagen, dass ich nur die "MS Excel Starter" zuhause habe.
Es gibt irgendwie bei gewissen Excel Versionen auch die Import aus Textdatei - Funktion. Verfahren ähnlich, nur eben die Textdatei angeben...
Gib Bescheid, wenns nicht klappt oder was anders ist, als es sein sollte.
Mitglied: DerPue
DerPue 19.07.2013 um 07:44:20 Uhr
Goto Top
Hallo Mondragor,

habe es gerade probiert...
das ist doch mal ne Lösung ;) Hab mir die Bearbeitung der CSV schon weggespeichert, damit ich das nicht vergesse ^^
Hatte gestern gegen späten Nachmittag auch noch einen Ansatz... bin mal gespannt was Du davon hälst...

echo "" > verzeichnisse.csv   

$colItems = (Get-ChildItem C:\temp -recurse | Measure-Object -property length -sum) 
echo "temp - $("{0:N3}" -f ($colItems.sum / 1GB) + " GB")" >> verzeichnisse.csv  

$colItems = (Get-ChildItem C:\temp2 -recurse | Measure-Object -property length -sum) 
echo "temp2 - $("{0:N3}" -f ($colItems.sum / 1GB) + " GB")" >> verzeichnisse.csv  

"  " >> verzeichnisse.csv  
"  " >> verzeichnisse.csv  

"   *** B I T T E  D A T E N  A B  H I E R   Z U S A M M E N R E C H N E N ***" >> verzeichnisse.csv  

"  " >> verzeichnisse.csv  
"  " >> verzeichnisse.csv  

$colItems = (Get-ChildItem C:\temp -recurse | Measure-Object -property length -sum) 
echo "temp"  
echo "$("{0:N3}" -f ($colItems.sum / 1GB))" >> verzeichnisse.csv  


$colItems = (Get-ChildItem C:\temp2 -recurse | Measure-Object -property length -sum) 
echo "temp2"  
echo "$("{0:N3}" -f ($colItems.sum / 1GB))" >> verzeichnisse.csv  

Danke überigens mit dem Tipp mit dem "" jetzt sieht das auch nen bissl besser aus. ;)

viele Grüße
DerPue
Mitglied: DerPue
DerPue 19.07.2013 um 08:02:05 Uhr
Goto Top
Der Vollständigkeithalber...
Sollte jemand Office2010 nutzen wäre der Weg die csv umzuwandeln dieser....

Neue Arbeitsmappe → Daten → Aus Text
Es öffent sch ein neues Fenster. In diesem zu der erstellten .csv navigieren und öffnen.
Dann die Schritte einleiten die Mondragor beschrieben hat.
Vielen Dank nochmal an dieser Stelle für die Unterstützung
Mitglied: Mondragor
Mondragor 19.07.2013 aktualisiert um 12:25:45 Uhr
Goto Top
Nun, ich habe keinen Zweifel, dass Deine Lösung auch funktioniert.
Als Trenner solltest Du dann aber " - " wählen, mit Leerzeichen.
Denn sonst hast Du die Zahlenwerte als Zeichenketten mit nem " " Leerzeichen vorn dran in den Spalten stehen -
und die lassen sich nicht unbedingt ohne Weiteres addieren.

Letztlich ist es Dir überlassen, welche Formatierung Du haben möchtest. Einen "-" als Trenner find ich nicht soo gut,
weil der in Windows-Verzeichnisnamen schon eher vorkommen kann, als ein ";"...
Vom Prinzip ist es ja beides sehr ähnlich.
Das Zusammenrechnen in der Powershell habe ich nur als Beispiel angeführt, ist eben genauer.
Wenn immer die selben zusammengerechnet werden sollen, würd ich persönlich das mit scripten.
Ansonsten eben Excel.
Durch erneutes Ausführen erhältst Du die aktualisierung der "Füllstände".
Theoretisch müsste es auch möglich sein, die Formel für die Excel-Berechnung in die Powershell zu schreiben,
dabei aber aufpassen, wenn weiter oben zusätzliche Zeilen in die CSV kommen, stimmen die Zeilennummern
nicht mehr.

Ansonsten gern geschehn,
Grüße, Mondragor