none
Profielgrösse von gefilterten Benutzern auslesen und exportieren in CSV RRS feed

  • 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

    Donnerstag, 11. Dezember 2014 11:29

Antworten

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+

    Donnerstag, 11. Dezember 2014 11:55
  • 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?

    Donnerstag, 11. Dezember 2014 13:13
  • 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
    Donnerstag, 11. Dezember 2014 14:37
  • 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
    Freitag, 12. Dezember 2014 09:05
  • 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

    Siehe: http://www.powershell-group.eu/forums/topic/belegten-und-freien-speicherplatz-von-netzlaufwerken-auslesen/#post-5400


    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+

    Samstag, 13. Dezember 2014 11:38