Jump to content

Powershell Get-ChildItem mit Änderungsdatum ausgeben


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Geschrieben

Ich möchte auf XP-Clients nach verwaisten Userprofilen suchen, also dachte ich, dass ich jeweils nach der Datei "NTUSER.DAT" unter "C:\Dokumente und ..." suche und als verwaist deklariere, was älter ist als 3 Monate.

Da forfiles leider kein UNC unterstützt, musste ps (Powershell) herhalten, mit Get-ChildItem komme ich weiter, aber es läuft nicht nach Wunsch. Hier die Syntax, die alle "NTUSER.DAT" ausgeben soll:

Get-ChildItem "\\netzwerk-pc\C$\Dokumente und Einstellungen\*" -name "NTUSER.DAT" -recurse -force | ? { ($_.LastAccessTime -lt (Get-Date).AddMonths(-3)) } | out-file "\\netzwerk-pc1\c$\Dokumente und Einstellungen\Administrator\Desktop\ntuser-dat.txt"


Was mir nun ausgegeben wird sind zwar "NTUSER.DAT"-Namen, aber egal, was ich als Datumsfilter (AddMonths, AddDays, AddYears) einsetze, es bleibt immer bei derselben Auflistung. Syntaxfehler wirft ps nicht, aber irgendwie greift die Filterung nicht oder falsch. Was läuft da verkehrt?

Außerdem hätte ich gern, dass das Datum der letzten Veränderung mit ausgegeben wird (aktuell listet ps nur die Dateinamen unereinander ohne weiteren Kontext auf), wie stelle ich das an (wenn mgl. mit Syntax-Bsp. im Code)? Danke vorab.

Geschrieben

...

 

Zum Filtern der Ausgabe kannst du Select-object oder Format-Table verwenden

 

...

Danke für deine Antwort,

 

das sagt mir momentan nicht sehr viel, da ich nicht weiß, wie ich diese Option wo einbinden muss. Hast du ein Bsp., wie ich das syntaktisch einbinden kann?

Ich habe mir hier aus dem Forum ein Bsp.-Script geholt, welches ich auf diesem Weg umbog:

$path="\\netzwerk-pc\C$\Dokumente und Einstellungen\*"
Get-ChildItem $path -name "NTUSER.DAT" -recurse -force
$MonateAlt=(Get-Date).AddMonths(-3)


$DateiAlter=$MonateAlt  # Zuweisung, die benutzt wird

# Ab hier nichts mehr ändern
Foreach ($item in (dir –recurse $path))
{ 
If (!( $item.PSIsContainer))         
{              
                 If ($item.LastWriteTime –lt $DateiAlter)  
                 {             
                  Write-output "$($item.FullName), $($item.LastWriteTime), $($item.Length)" 
                 }
}
}

Die Ausgabe schaut nun folgendermaßen aus (genau so möchte ich es eben nicht haben):

 

NTUSER.DAT

NTUSER.DAT

NTUSER.DAT

NTUSER.DAT

NTUSER.DAT

NTUSER.DAT

\\netzwerk-pc\C$\Dokumente und Einstellungen\administrator\Eigene Dateien\Eigene Bilder\Beispielbilder.lnk, 12/07/2012 12:00:34, 907

\\netzwerk-pc\C$\Dokumente und Einstellungen\administrator\Eigene Dateien\Eigene Musik\Beispielmusik.lnk, 12/07/2012 12:00:34, 897

Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde dich hier an.

Jetzt anmelden
×
×
  • Neu erstellen...