Zum Inhalt springen

Get-FolderSize Funktion im Eigenbau - Property Problem


Empfohlene Beiträge

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

}

post-95184-14430449904589_thumb.png

Link zu diesem Kommentar
Auf anderen Seiten teilen

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 von SilentDemise
Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...