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 } Zitieren
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 Zitieren
pierewoehl Geschrieben 12. Dezember 2014 Autor Geschrieben 12. Dezember 2014 Achsooo. Ich möchte die Größe aller in diesem Ordner enthaltenen Dateien haben. Zitieren
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. Zitieren
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. Zitieren
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. Zitieren
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. Zitieren
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. Zitieren
SilentDemise Geschrieben 15. Dezember 2014 Geschrieben 15. Dezember 2014 ich sehe, wir verstehen uns Zitieren
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 Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.