nikos51
Goto Top

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. face-sad

Vielleicht könnt ihr mir ein paar Vorschläge oder Tipps geben, wie man das ganze lösen könnte... face-smile

Ich werde die Aufgabe am besten mal hier einfügen.


  1. Dateiverbrauch:
  2. In Ihrer Domäne sollen Qoutas eingeführt werden.

  1. Sie sollen im Vorfeld eine Liste erstellen,
  2. die für jeden Benutzer angibt, wieviel Speicher
  3. er/sie belegt (auf dem entsprechenden Laufwerk).

  1. Nutzen Sie die Powershell:
  2. get-childitem
  3. get-acl

  1. Problem: Dateiobjekt und Zugriffsrechte sind getrennt.

  1. Ansatz:
  2. Hole alle Dateiobjekte
  3. Für jedes Dateiobjekt wird der Eigentümer ermittelt
  4. Das Objekt erhält einen neuen Member (add-member)
  5. Inhalt: der Eigentümer.
  6. Anschließend nach Eigentümer gruppieren und die Dateigrößen aufsummieren.



  1. Strategie für die Aufgabe Datei/Eigentümer/Speicherverbrauch:

  1. Gehe den Dateibaum rekursiv durch.
  2. Für jede Datei wird der Eigentümer ermittelt.
  3. Diese Information wird mittels:
  4. add-member der Datei hinzugefügt.
  5. Anschließend kann durch:
  6. Sortieren, Gruppieren, Messen...
  7. 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

Content-Key: 274137

Url: https://administrator.de/contentid/274137

Printed on: April 23, 2024 at 06:04 o'clock

Mitglied: 114757
114757 Jun 10, 2015 updated at 12:13:37 (UTC)
Goto Top
Moin Nikos,
ein schöner Einzeiler zum üben face-wink
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}
Selektiert nur Dateien keine Ordner

%{$_ | add-member -Type NoteProperty -Name Besitzer -Value ((get-acl $_).owner) -PassThru}
Fügt mit Foreach jeder Datei in der Pipeline den Besitzer als weitere Eigenschaft hinzu, und gibt die Objekte weiter an die Pipeline (-passthru)

select Length,Besitzer | group Besitzer 
Selektiert die nötigen Eigenachaften und gruppiert dann die Objekte nach Besitzer

select Name,@{n='Total(MB)';e={"{0:N3}" -f (($_.Group.Length | measure -Sum).Sum / 1MB)}} 
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

sort "Total(MB)" -Desc
Zum Schluss sortieren wir die Objekte absteigend nach Größe

Hoffe mit den Erläuterungen kannst du das ganze besser nachvollziehen.

Gruß jodel32
Member: Nikos51
Nikos51 Jun 15, 2015 at 12:08:48 (UTC)
Goto Top
Hallo jodel32,

vielen Dank für die schnelle und präzise Antwort.

Du hast alles verständlich Erläutert.

Nun habe ich ein Beispiel gesehen, welches, so der Lehrer, dem sehr nahe kommt, wie es am besten aussehen sollte.

Ich habe mal das Bild hochgeladen. Hier der Link: http://www.directupload.net/file/d/4019/zaco4r26_jpg.htm

Nun frage ich mich aber, wie man auf diese Ergebnis kommt. :S

Für deine und jede weitere Hilfe wäre ich sehr dankbar :D

Gruß

Nikos51
Mitglied: 114757
114757 Jun 15, 2015 updated at 19:07:35 (UTC)
Goto Top
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.