Benutzer mit den meisten Antworten
Profielgrösse von gefilterten Benutzern auslesen und exportieren in CSV

Frage
-
Hallo miteinander
Ich möchte gerne die Profilgrössen aller AD-Benutzer auslesen. Der "Filter" um nur einige Benutzer auszulesnen ist das Feld "Company".
Ich probierte bis jetzt nur einen einzelnen Benutzer auszulesen. Dabei scheitere ich aber bereits. Hier der Versuch:
Import-Module ActiveDirectory Get-ChildItem \\server\freigabe\benutzer.V2 -recurse | Measure-Object -property length -sum; "{0:n2}" -f (colItem.sum / 1MB) + " MB"
Dabei kommt folgendes raus:
Count: 116 Acerage: Sum: 1806294 Maximum: Minimum: Property: length 0.00 MB
Dieses Profil ist aber ca. 200MB gross (im Explorer nachgeschaut).
Hat mir jemanden einen Tipp, was ich da Falsch mache, resp. wie ich die Grösse des Profiles besser auslesen kann?
Herzlichen Dank schon im Voraus und freundliche Grüsse
MBB
Antworten
-
Versuch mal den Parameter -Force bei Get-ChildItem das findet auch versteckte Dateien und System Dateien wie z.B. die user Registry NTUser.dat.
Ansonsten kann es auch an Zugriffsrechten liegen oder zu Langen Datei-Pfaden....
PowerShell Artikel, Buchtipps und kostenlose PowerShell Tutorials + E-Books
auf der deutschsprachigen PowerShell Community
Mein 21 Teiliger PowerShell Video Grundlehrgang
Deutsche PowerShell Videos auf Youtube
Folge mir auf:
Twitter | Facebook | Google+- Als Antwort markiert MBB_1089 Freitag, 12. Dezember 2014 09:03
Alle Antworten
-
Hallo MBB !Das Semikolon bedeutet das du 2 Einzelne Befehle in einer Zeile hast.
Das Ergebnis von der folgenden Zeile wird nur Angezeigt aber nicht weiter verwertet.Get-ChildItem \\server\freigabe\benutzer.V2 -recurse | Measure-Object -property length -sum
Du musst dieses Ergebnis irgendwo ablegen oder weiterverarbeiten:
# Ergebnis in einer Variablen ablegen $Measure = Get-ChildItem \\server\freigabe\benutzer.V2 -recurse | Measure-Object -property length -sum # Ergebnis Weiterverarbeiten "{0:n2}" -f ($Measure.Sum/ 1MB) + " MB" # oder so in einer Zeile "{0:n2}" -f ((Get-ChildItem \\server\freigabe\benutzer.V2 -recurse | Measure-Object -property length -sum).sum / 1MB) + " MB"
PowerShell Artikel, Buchtipps und kostenlose PowerShell Tutorials + E-Books
auf der deutschsprachigen PowerShell Community
Mein 21 Teiliger PowerShell Video Grundlehrgang
Deutsche PowerShell Videos auf Youtube
Folge mir auf:
Twitter | Facebook | Google+- Bearbeitet Peter Kriegel Donnerstag, 11. Dezember 2014 11:56
-
Danke für die Antwort. Jetzt rechnet er.
Das Problem: Im Explorer ist das Profil 200MB gross (wie oben beschrieben). Das Ergebnis des Befehles ist "1.72 MB"... Meinen Mathekentnissen zufollge ist das nicht annähernd das Selbe ^^
An was könnte das liegen?
-
Versuch mal den Parameter -Force bei Get-ChildItem das findet auch versteckte Dateien und System Dateien wie z.B. die user Registry NTUser.dat.
Ansonsten kann es auch an Zugriffsrechten liegen oder zu Langen Datei-Pfaden....
PowerShell Artikel, Buchtipps und kostenlose PowerShell Tutorials + E-Books
auf der deutschsprachigen PowerShell Community
Mein 21 Teiliger PowerShell Video Grundlehrgang
Deutsche PowerShell Videos auf Youtube
Folge mir auf:
Twitter | Facebook | Google+- Als Antwort markiert MBB_1089 Freitag, 12. Dezember 2014 09:03
-
Danke. Das "-Force" hat geholfen. Hier der fertige Code, falls es jemanden interessiert:
#Author: MBB_1089 #Erstellt: 12.12.2014 #Änderungen [Datum, Was]: Import-Module ActiveDirectory #Funktion, Daten in Textfile anfügen (zuoberst) function Insert-Content ($file) { BEGIN { $content = Get-Content $file } PROCESS { $_ | Set-Content $file } END { $content | Add-Content $file } } #Textfile erstellen Out-File .\path_and_size.txt #Jeder Benutzer auslesen, welcher in der Firma "XYZ" ist (Eigenschaft von Benutzer) $info = get-ADUser -filter 'company -Like "XYZ"' -Properties profilepath #Benutzername und Profilpfad auflisten, nach Benutzername sortieren und in CSV speichern $path = $info | select-object SamAccountName,profilepath | sort -property SamAccountName |Export-Csv .\user_profilepath.csv -notypeinformation -delimiter "," #CSV öffnen und verarbeiten Import-Csv .\user_profilepath.csv | foreach { #Spalte "SamAccountName" in Variable schreiben $name = ($_.SamAccountName) #Spalte "Profilepath" in Variable schreiben $pfad = ($_.profilepath) #V2 zu Pfad hinzufügen $endpath = $pfad + ".V2" #Test ob richtig geschrieben #$content = $name + "," + $pfad + ".V2;" #write-host $content #Ausrechnener der Grösse vom Pfad und in Textfile schreiben "{0:n2}" -f ($name + "," + (Get-ChildItem $endpath -recurse -Force | Measure-Object -property length -sum).sum / 1MB) + ",MB;" | Insert-Content path_and_size.txt }
Erklärung: alle Benutzer aus bestimmter Firma herausfiltern, Pfad vom Profiel auslesen und Grösse berechnen. Dies dann in ein Text-File (zum weiterverarbeiten) abspeichern.
Mann kann es selbstverständlich noch performatner etc. machen... So ist es aber klein, einfach und praktisch :)
Liebe Grüsse, MBB
- Bearbeitet MBB_1089 Freitag, 12. Dezember 2014 09:07 Rechtschreibung
-
Halllo MBB!
Schön das es geholfen hat. :-)
Mann kann es selbstverständlich noch performatner etc. machen... So ist es aber klein, einfach und praktisch :)
Ja, nicht nur schneller .NET und damit auch PowerShell ist im Dateisystem sehr lahm und kann leider nichtmit langen Dateipfaden umgehen... :-(
Wenn man sehr lange Dateipfade und viel geschwindigkeit braucht nehme ich immer Robocopy für so etwas
PowerShell Artikel, Buchtipps und kostenlose PowerShell Tutorials + E-Books
auf der deutschsprachigen PowerShell Community
Mein 21 Teiliger PowerShell Video Grundlehrgang
Deutsche PowerShell Videos auf Youtube
Folge mir auf:
Twitter | Facebook | Google+