Dateien finden die in den letzten 15 Minuten bearbeitet wurden

Möchte man wissen welche Dateien in einem Verzeichnis innerhalb der letzten X Minuten bearbeitet oder erstellt wurden, so hilft das folgende Snippet:

1
Get-ChildItem -Recurse E:\ | Where-Object {$_.LastWriteTime -gt (Get-Date).AddMinutes(-15)}

Das funktioniert auch mit Stunden oder Jahren. Einfach “AddMinutes” durch “AddHours” oder “AddYears” ersetzen.

Möglich wäre auch:

1
Get-ChildItem -Recurse E:\ | Where-Object {$_ .lastwritetime –lt "2008/1/12"}

Commandlet zu Alias finden

Wie man von einem Cmdlet zu den entsprechenden Aliassen kommt, habe ich hier gezeigt.
Das geht aber auch andersherum, also vom Alias zum Commandlet:

1
Get-Alias | Where-Object { $_.Name -eq 'cat' }

Wer wissen möchte, wie viele Aliasse es für ein Cmdlet gibt, der kann die folgende Zeile einmal ausführen:

1
Dir alias: | Group-Object Definition | Sort-Object Count -descending

Lokale Benutzer eines Computers anzeigen

Die lokalen User des eigenen, oder einer entfernten Workstation, können z.B. mit diesem PS-Skript ermittelt und angezeigt werden:

1
2
3
4
5
6
7
8
9
10
11
# Computernamen abfragen
$strPC = Read-Host 'Computername eingeben, oder <enter> drücken für localhost'
 
# Wenn Computername leer, dann localhost nehmen
if ($strPC -eq "") {
	$strPC = "$env:computername"
}
 
# Objekt referenzieren
$objPC = [ADSI]"WinNT://$strPC,computer"
$objPC.psbase.Children | Where-Object { $_.psbase.schemaclassname -eq 'user' } | Format-Table Name, FullName, LastLogin, Description -autoSize</enter>

Mehr Benutzereigenschaften:
Statt der letzten Zeile könnte auch mit

1
$objPC.psbase.Children | Get-Member

angezeigt werden, welche Benutzer-Properties noch zur Auswahl stehen bzw. abgefragt werden können.

Dateien löschen die älter als n Tage alt sind

Mein Beitrag vom 25.01.2008 “Dateien nach Datum löschen” zeigt beispielhaft, wie alle Dateien gelöscht werden können, die ein bestimmtes Datum überschritten haben.
Heute möchte ich zeigen, wie die Dateien gelöscht werden können, die älter als n Tage sind.

Und so geht das…

1
2
$Heute = Get-Date
Get-Childitem T:\Ablage -recurse | Where-Object {($Heute - $_.LastWriteTime).Days -gt 10} | Remove-Item

Das Beispiel erzeugt zuerst die Variable “Heute” welche das aktuelle Datum enthält. Danach Sucht es alle Dateien aus dem Verzeichnispfad “T:\Ablage” und deren Unterobjekte. Anschließend wird jedes Objekt durchlaufen und überprüft, ob das Änderungsdatum älter dem Datum minus 10 Tagen ist. Wenn ja, so wird gelöscht, wenn nicht, so wird mit dem nächsten Objekt fortgefahren.

Zusätzliches:
Mit Hilfe von “-WhatIf” hinter dem Remove-Item wird der Löschvorgang nur simuliert und nicht wirklich ausgeführt, was für Testzwecke sehr nützlich ist.
Weiter könnte hier statt dem “Remove-Item” auch etwas anderes passieren, z.B. das Verschieben oder Komprimieren der Dateien.