Powershell Dateiverbrauch
Hallo liebe Mitglieder,
ich habe eine Aufgabenstellung, an der ich nicht weiterkomme.
Wir sollen mit Hilfe von Powershell die Speicherbelegung des Laufwerks jedem Benutzers auslesen können.
Wir sollen die Dateiobjekte und Zugriffrechte anhand einer Liste auflisten lassen.
(Die Aufgabenstellung ist ein bisschen schwierig zu verstehe).
Leider komme ich einfach nicht mehr weiter, weil ich noch ein Anfänger in Sachen Powershell bin.
Vielleicht könnt ihr mir ein paar Vorschläge oder Tipps geben, wie man das ganze lösen könnte...
Ich werde die Aufgabe am besten mal hier einfügen.
Und so weit bin ich schon gekommen:
get-childitem -recurse -force |
foreach-object {
$eigentuemer = get-acl |
add-member -membertype noteproperty -value $eigentuemer -name Eigentuemer; $_ | select-object Eigentuemer, Name, Length; $_|
}
Und wie gesagt weiter komme ich nicht.
Hoffe Ihr könnt mir da weiterhelfen.
Danke schonmal im Vorraus.
Mit freundlichen Grüßen
Nikos
ich habe eine Aufgabenstellung, an der ich nicht weiterkomme.
Wir sollen mit Hilfe von Powershell die Speicherbelegung des Laufwerks jedem Benutzers auslesen können.
Wir sollen die Dateiobjekte und Zugriffrechte anhand einer Liste auflisten lassen.
(Die Aufgabenstellung ist ein bisschen schwierig zu verstehe).
Leider komme ich einfach nicht mehr weiter, weil ich noch ein Anfänger in Sachen Powershell bin.
Vielleicht könnt ihr mir ein paar Vorschläge oder Tipps geben, wie man das ganze lösen könnte...
Ich werde die Aufgabe am besten mal hier einfügen.
- Dateiverbrauch:
- In Ihrer Domäne sollen Qoutas eingeführt werden.
- Sie sollen im Vorfeld eine Liste erstellen,
- die für jeden Benutzer angibt, wieviel Speicher
- er/sie belegt (auf dem entsprechenden Laufwerk).
- Nutzen Sie die Powershell:
- get-childitem
- get-acl
- Problem: Dateiobjekt und Zugriffsrechte sind getrennt.
- Ansatz:
- Hole alle Dateiobjekte
- Für jedes Dateiobjekt wird der Eigentümer ermittelt
- Das Objekt erhält einen neuen Member (add-member)
- Inhalt: der Eigentümer.
- Anschließend nach Eigentümer gruppieren und die Dateigrößen aufsummieren.
- Strategie für die Aufgabe Datei/Eigentümer/Speicherverbrauch:
- Gehe den Dateibaum rekursiv durch.
- Für jede Datei wird der Eigentümer ermittelt.
- Diese Information wird mittels:
- add-member der Datei hinzugefügt.
- Anschließend kann durch:
- Sortieren, Gruppieren, Messen...
- Das Ergebnis ermittelt werden.
Und so weit bin ich schon gekommen:
get-childitem -recurse -force |
foreach-object {
$eigentuemer = get-acl |
add-member -membertype noteproperty -value $eigentuemer -name Eigentuemer; $_ | select-object Eigentuemer, Name, Length; $_|
}
Und wie gesagt weiter komme ich nicht.
Hoffe Ihr könnt mir da weiterhelfen.
Danke schonmal im Vorraus.
Mit freundlichen Grüßen
Nikos
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 274137
Url: https://administrator.de/forum/powershell-dateiverbrauch-274137.html
Ausgedruckt am: 27.04.2025 um 19:04 Uhr
3 Kommentare
Neuester Kommentar

Moin Nikos,
ein schöner Einzeiler zum üben
Zur Erläuterung der Teilstücke:
Selektiert nur Dateien keine Ordner
Fügt mit Foreach jeder Datei in der Pipeline den Besitzer als weitere Eigenschaft hinzu, und gibt die Objekte weiter an die Pipeline (-passthru)
Selektiert die nötigen Eigenachaften und gruppiert dann die Objekte nach Besitzer
Selektiert den Namen(also den Besitzer, Eigenschaftsname ändert sich weil gruppiert worden ist!), und mit Hilfe einer calculated property die den Namen Total(MB) bekommt, wird die Größe der Dateien summiert, in MB dargestellt und auf 3 Nachkommastellen begrenzt
Zum Schluss sortieren wir die Objekte absteigend nach Größe
Hoffe mit den Erläuterungen kannst du das ganze besser nachvollziehen.
Gruß jodel32
ein schöner Einzeiler zum üben
gci 'c:\Ordner" -recurse -EA SilentlyContinue | ?{!$_.PSIsContainer} | %{$_ | add-member -Type NoteProperty -Name Besitzer -Value ((get-acl $_).owner) -PassThru} | select Length,Besitzer | group Besitzer | select Name,@{n='Total(MB)';e={"{0:N3}" -f (($_.Group.Length | measure -Sum).Sum / 1MB)}} | sort "Total(MB)" -Desc
Zur Erläuterung der Teilstücke:
?{!$_.PSIsContainer}
%{$_ | add-member -Type NoteProperty -Name Besitzer -Value ((get-acl $_).owner) -PassThru}
select Length,Besitzer | group Besitzer
select Name,@{n='Total(MB)';e={"{0:N3}" -f (($_.Group.Length | measure -Sum).Sum / 1MB)}}
sort "Total(MB)" -Desc
Hoffe mit den Erläuterungen kannst du das ganze besser nachvollziehen.
Gruß jodel32

Naja, das nenne ich aber jetzt etwas faul, denn eine einfache Ergänzung der Eigenschaften im Select sollte dir das gewünschte Erhebnis liefern.
Etwas Einsatz und Lernbereitschaft solltest du schon an den Tag legen, sonst wirkt das hier wie wenn du nur eine fertige Lösung abgreifen und nichts lernen willst.
Zerlege meinen Code an den Pipes und schau dir die Zwischenergebnisse an, dann weist was zu ändern ist.
Etwas Einsatz und Lernbereitschaft solltest du schon an den Tag legen, sonst wirkt das hier wie wenn du nur eine fertige Lösung abgreifen und nichts lernen willst.
Zerlege meinen Code an den Pipes und schau dir die Zwischenergebnisse an, dann weist was zu ändern ist.