Meine eigene kleine Scripting-Olympics

Hier ist eine kleine Herausforderung, die sicher ganz gut in die legendären Scripting Olympics der nicht minder legendären Scripting Guys bei Microsoft passen würde. Die Aufgabe lautet:

Wie lassen sich alle nach dem Start der PowerShell per Start-Transcript angelegten Transcriptdateien löschen bis auf jene, die mit dem Start der aktuellen Sitzung ausgelesen wurde?

Nun, wahrscheinlich ist die Aufgabe doch ein wenig zu einfach, denn es genügt ein einzelner Befehl.

Gibt jemand auf? Dann ist hier die Lösung.

<Lösung kommt gleich…>

$Dateien = (get-childitem $env:userprofile\documents\powerShell* | sort-object
LastWriteTime);$Dateien[0..$($Dateien.Length-2)] | remove-item –whatif

Der „Trick“ besteht darin, alle Dateien nach dem Datum zu sortieren, an dem sie zuletzt geschrieben wurden, die Liste als Array anzusprechen und alle bis auf den letzten Eintrag zu löschen.

Der WhatIf-Parameter dient nur als „Sicherungsnetz“ für den Fall, dass die Dateien nicht wirklich gelöscht werden sollen.

Und da wir gerade bei den Tricks sind: Möchte man erreichen, dass alle „Transkripte“ in ein und dieselbe Datei geschrieben werden, muss der Name dieser Datei auf Start-Transcript folgen und es muss zusätzlich der –Append-Parameter gesetzt werden, damit der Inhalt beim nächsten Start angehängt wird.

Was bei der WSP 1.0 anscheinend nicht geht – feststellen, ob gerade eine „Aufzeichnung“ läuft.

Schreibe einen Kommentar

Bitte logge dich mit einer dieser Methoden ein, um deinen Kommentar zu veröffentlichen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s