pierewoehl Geschrieben 12. Dezember 2014 Geschrieben 12. Dezember 2014 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 }
SilentDemise Geschrieben 12. Dezember 2014 Geschrieben 12. Dezember 2014 (bearbeitet) 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 2014 von SilentDemise
pierewoehl Geschrieben 12. Dezember 2014 Autor Geschrieben 12. Dezember 2014 Achsooo. Ich möchte die Größe aller in diesem Ordner enthaltenen Dateien haben.
pantsoff Geschrieben 15. Dezember 2014 Geschrieben 15. Dezember 2014 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.
SilentDemise Geschrieben 15. Dezember 2014 Geschrieben 15. Dezember 2014 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.
pantsoff Geschrieben 15. Dezember 2014 Geschrieben 15. Dezember 2014 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.
SilentDemise Geschrieben 15. Dezember 2014 Geschrieben 15. Dezember 2014 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.
pantsoff Geschrieben 15. Dezember 2014 Geschrieben 15. Dezember 2014 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.
pierewoehl Geschrieben 15. Dezember 2014 Autor Geschrieben 15. Dezember 2014 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
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden