Windows-Systemkomponenten

Windows Powershell richtig nutzen

Weitere Beispiele und Tipps

Es ist entscheidend, Pipelines der Powershell in der richtigen Abfolge anzusetzen. Wenn Sie mit folgendem Befehl

dir -recurse *.xlsx | select fullname | where {$_.CreationTime -gt "12.12.2012"}

versuchen, die jüngeren Excel-Dateien aufzulisten, erhalten Sie kein Ergebnis. Sie haben nämlich mit "Select" die vielen Eigenschaften von Dateiobjekten auf eine einzige reduziert - "Fullname" (Pfad plus Name). Die nachfolgende Suche nach dem Erstelldatum (CreationTime) ist somit sinnlos, weil das Objekt diese Eigenschaft nicht mehr enthält. Eine Umstellung führt zum erwarteten Ergebnis:

dir -recurse *.xlsx | where {$_.CreationTime -gt "12.12.2012"} | select fullname

Die umfangreichen Script-Möglichkeiten, um Objektvariablen weiter zu bearbeiten, können wir hier kaum andeuten. Sie entsprechen in vielen Belangen der Syntax von Unix-Shells, sind aber auch für jeden WSH-oder Batch-Erfahrenen durchaus zugänglich - an "If", "For", "Foreach", "While" oder "Switch" in der einen oder anderen Form kommt keine Sprache vorbei. Den simpelsten Einstieg für erste PS1-Scripts bieten Filter, die den Datenstrom der Pipeline entweder weiterfließen lassen oder nicht. Die einzelne Instanz wird in jedem Filter (auch in "Where" oder "Foreach") mit der globalen Variable "$_" bezeichnet. Darf das Objekt oder eine Eigenschaft desselben "durch", schreibt man einfach "$_". Ein ganz einfaches Beispiel:

Filter Dirs {if ($_.parent) {$_}}

Dieser Filter lässt nur Ordner durch, weil Dateien die Eigenschaft "Parent" fehlt.

dir -recurse | Dirs | select fullname

Powershell isE mit Intellisense: Für script-Profis ist das isE (integrated scripting Environment) recht nützlich. Für den interaktiven Gebrauch reicht die normale Shell.
Powershell isE mit Intellisense: Für script-Profis ist das isE (integrated scripting Environment) recht nützlich. Für den interaktiven Gebrauch reicht die normale Shell.

Der "Dir"-Befehl mit dem vorher definierten Dirs-Filter listet dann folglich nur noch die Ordner auf. Für einfache Text- oder HTML-Dateien bietet die Powershell eine schnelle Textsuche. Dabei können Sie sich mit "Select" die Fundstellen, die Trefferdateien und bei Bedarf weitere Eigenschaften ausgeben lassen:

dir -recurse *.txt | SelectString -SimpleMatch "Venedig" | select path,line | format-list

Eine seit Version 2.0 eingeführte attraktive Ausgabe-Variante ist "Out-Gridview". Die Objektdaten werden grafisch dargestellt und lassen sich filtern und sortieren:

get-scheduledtask | select taskname,taskpath,state, description | out-gridview

Eine weitere große Hilfe wurde mit Version 3.0 eingeführt: Mit "Show-Commands" erhalten Sie eine Übersicht über alle internen Befehle, die sich auch nach Modulen filtern lassen, etwa nach "NetAdapter" oder "BitLocker". Denselben Service bietet standardmäßig das "Windows Powershell ISE" (Integrated Scripting Environment). Dieses Tool ist aber für gelegentliches, interaktives Verwenden der Powershell nicht notwendig. (mje)

Dieser Artikel basiert auf einem Beitrag unserer Schwesterpublikation PC Welt.