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

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.

Link zu diesem Kommentar

...

 

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

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

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...