Zum Inhalt springen
Der Guide für ein smartes Leben.
In Schale geworfen

Teil 9: Die neue PowerShell einsetzen

Autoren: Redaktion pcmagazin und Tobias Weltner • 6.3.2007 • ca. 2:10 Min

Es wird noch besser: Ein besonderes Highlight der PowerShell ist Ihre Fähigkeit, alle Informationen so lange wie möglich im Original zu belassen. Was das bedeutet, wird erst auf den zweiten Blick deutlich und ist tatsächlich eine kleine Revolution. Schauen Sie sich dazu dieses Beispiel an:...

Es wird noch besser: Ein besonderes Highlight der PowerShell ist Ihre Fähigkeit, alle Informationen so lange wie möglich im Original zu belassen. Was das bedeutet, wird erst auf den zweiten Blick deutlich und ist tatsächlich eine kleine Revolution. Schauen Sie sich dazu dieses Beispiel an:

Die neue PowerShell einsetzen
© Archiv
cd $env:windirsystem32
dir *.dll

Mit diesen Anweisungen geben Sie alle DLLDateien desWindows-Systemverzeichnisses aus, was vermutlich sehr viele Dateien sind. Schon in der klassischen Konsole hat man deshalb so genanntes Piping eingesetzt: Mit einem |-Zeichen konnte das Ergebnis eines Befehls nahtlos in einen anderen eingespeist werden. Die nächste Anweisung gibt die Informationsflut seitenweise aus:

dir *.dll | more

In konventionellen Shells würde hier das Ergebnis von dir, so wie es normalerweise auf dem Bildschirm erscheinen würde, als Textinformation an den Befehl more weitergegeben, der es dann seitenweise ausgibt. In der Power- Shell liefert dir dagegen gar keine Textinformationen, sondern gibt die einzelnen Dateien, die die Abfrage erbracht hat, im Original als Objekt über die Pipeline an den nächsten Befehl weiter. Den Beweis erbringt diese Anweisung:

dir *.dll | convert-html > c:info.htm
c:info.htm

Hier speist dir sein Ergebnis in das Commandlet convert-html, das daraus HTML-Code generiert. Der wird über > in eine Datei umgeleitet und diese dann geöffnet.

Was man nun sieht, ist eher überraschend: In der Datei werden sehr viel mehr Informationen angezeigt als dir von sich aus zeigen würde. Tatsächlich hat dir also nicht bloß die Textinformation weitergeleitet, die sonst auf dem Bildschirm erschienen wäre, sondern die einzelnen Dateien selbst. Convert-html konnte dadurch diesen Dateien so viele Informationen entlocken, wie im HTML-Report zu sehen sind.

Das ist wirklich praktisch. Schauen Sie sich das am Beispiel von Dateien an. Zuerst soll eine Testdatei angelegt werden:

new-item -path c: -name test.txt -type
file

Nun kann man die Datei mit dir abfragen, was noch nicht besonders aufregend ist:

Dir c: est.txt

Möchte man nun aber mehr mit dieser Datei unternehmen, kann man sich das Objekt-Piping zunutze machen. Es geht nämlich auch rückwärts. Die nächste Zeile speichert das Ergebnis von dir in einer Variablen:

$datei = dir c: est.txt

Wenn Sie sich den Inhalt von $datei ausgeben lassen, sehen Sie dasselbe, was dir Ihnen zuvor direkt ausgegeben hat, aber in Wirklichkeit ist $datei gar kein Text, sondern ein Objekt. Sie können es deshalb zur weiteren Analyse über die Objektpipeline an get-member senden und so erfahren, welche weiteren Befehle es kennt:

$datei | get-member

Sie erhalten eine penible Liste sämtlicher Eigenschaften (Informationen) und Methoden (Befehle), die das Datei-Objekt unterstützt. Um diesesWissen umzumünzen, hängen Sie an den Variablennamen des Objekts einen Punkt und dann den Namen der gewünschten Eigenschaft oder Methode an.

Möchten Sie zum Beispiel wissen, wann die Datei erstellt wurde, dann fragen Sie die Eigenschaft CreationTime ab:

$datei.CreationTime

Erstaunlich: Endlich geht es auch umgekehrt, und der Anwender kann den Geburtstermin einer Datei nachträglich ändern. Zuständig für diesesWunder der Windows-Dateiverwaltung ist die Methode Set_CreationTime aus der Liste:

$datei.Set_CreationTime("1.1.1994")