Veröffentlicht 12. Dezember 201410 j Hi Leute, Ich habe mir in meiner $PROFILE eine Funktion erstellt um die Größe eines Ordner herauszufinden, doch sie Akzeptiert nur Relative angaben und Manchmal nicht, z.B im root Verzeichnis einer HD. Mit Escaping habe ich es schon versucht, leider geht es nicht. das ":" Ist schuld, hat jemand Abhilfe? function Get-FolderSize { $location = $args[0] Write-Host "Dieses Verzeichnis wird gescannt:"$location Get-ChildItem $location | Measure-Object -property length -sum }
12. Dezember 201410 j Das hat mit dem Doppelpunkt nichts zu tun. Wenn du einen absoluten Pfad angibst, definierst du einen entry point für Get-Childitem, bei einem relativen pfad gibst du ihm einen ordner. auf der Auflistung gibt es keine length property. Edit: ist vllt. etwas unklar ausgedrückt, von Get-ChildItem zurückgegebene Folder haben keine length, dementsprechend kriegst du eine exception. Was willst du denn erreichen? Welche Größe willst du denn haben? Bearbeitet 12. Dezember 201410 j von SilentDemise
12. Dezember 201410 j Autor Achsooo. Ich möchte die Größe aller in diesem Ordner enthaltenen Dateien haben.
15. Dezember 201410 j Also wenn ich die Function teste, kann ich sowohl relative als auch absolute Pfade benutzen. Ich denke das Problem hängt eher mit deinem Verzeichnis zusammen. Zu wenig Rechte hätte die Shell normalerweise beanstandet, du kannst dir mal Trace-Command anschauen, damit kannst du das Problem eventuell etwas genauer analysieren.
15. Dezember 201410 j Hast du es denn auch in Ordnern versucht wo weitere Ordner liegen? Da geht es nämlich nicht mehr. Es hat wie gesagt Nils mit den Pfaden zu tun.
15. Dezember 201410 j Ja, das hatte ich versucht. Allerdings ging das verrücktetweise anfänglich. Habe nun mehrere, weitere Pfade untersucht, bis ich das Problem nachvollziehen konnte (manche Pfade mit Unterordner gehen, manche nicht). Meiner Meinung ist das Problem die Deklaration deines Array. Nach kurzem Testing scheint folgendes zu funktionieren: function Get-FolderSize { $location = @() Write-Host "Dieses Verzeichnis wird gescannt:"$location Get-ChildItem $location | Measure-Object -property length -sum } Das ist im MS Technet so auch offiziell dokumentiert.
15. Dezember 201410 j damit umgehst du aber nur, dass du kein length property auf der Ergebnismenge hast, das Ergebnis was du so bekommst ist nicht korrekt. (Ganz davon ab, das write-host böse ist, am besten direkt write-output angewöhnen). Die eigentliche Problematik ist, dass Ordner an sich keine Größe haben und diese entsprechend rekursiv betrachtet werden müssen.
15. Dezember 201410 j Stimmt, war auch quick und dirty aus Zeitmangel. Habe die Foldersize nicht geprüft. Dann hilft wohl nur mit foreach durchloopen (und Parameter -Recurse nicht vergessen) und dann entsprechend aufsummieren.
15. Dezember 201410 j Autor Ich hab die Lösung. -recurse angeben function Get-FolderSize { $location = $args[0] Write-Host "Dieses Verzeichnis wird gescannt:"$location $value = "{0:N2}" -f ((Get-ChildItem -recurse $location | Measure-Object -property length -sum).Sum / 1MB) Write-Host "Die Größe des Verzeichnis:"$value } Danke für die Denkanstöße und Hilfe
Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.