Archiv

Windows PowerShell

Ein Erfahrungsbericht

Für ein Projekt wurde ich in die Lage versetzt mich näher mit der Windows PowerShell zu befassen.
Zum Anfang haben sie dabei natürlich viele Fragen gestellt.


Was ist die Windows PowerShell?

Die PowerShell ist eine objektorientierte Skript- und Programmiersprache in Windows Systemen mit einer eigenem Command Line Interface. Mit ihrer Hilfe lassen sich wiederkehrende Aufgaben automatisieren und kleine Helferlein und Tools programmieren.
Seit dem Jahr 2016 ist die PowerShell als Open-Source-Projekt plattformübergreifend für alle gängigen Betriebssysteme verfügbar. Die PowerShell stellt eine interaktive Befehlszeilen-Shell für Windows-Systeme zur Verfügung und kann als Nachfolger für die DOS Kommandozeile verstanden werden. Allerdings ist die PowerShell wesentlich mächtiger und bietet dem Nutzer ein viel größerer Funktions- und Befehlsumfang, dadurch lassen sich mit der PowerShell zahlreiche Aufgaben auf Rechnern und Betriebssystemen automatisieren.


Der Aufbau von PowerShell Skripten


Skripte bestehen aus den Cmdlets und zugehörigen Logikfunktionen. Im Kern arbeitet die PowerShell objektorientiert. Dadurch stehen ihr beispielsweise alle COM-Objekte und das gesamte .NET Framework zur Verfügung was die Einarbeitung wesentlich erleichtert, wenn man schon einmal mit diesen Features zu tun hatte. Ebenfalls ist der Zugriff auf die Windows Management Instrumentation (WMI) möglich, wodurch sich umfassende Systeminformationen abfragen lassen.

Im Netzwerk

Befehle und Skripte können über ein Netzwerk, remote auf anderen Rechnern ausgeführt werden. Dadurch eignet sich die Shell bestens für Administrationsaufgaben in Netzwerken. Grundsätzlich verbindet die Shell die objektorientierte Programmierung mit den von Unix-Shells bekannten Pipe- und Filterfunktionen. Anwender der Shell können sowohl aufwendige Skripte programmieren als auch einfache Kommandozeilenbefehle ausführen und miteinander verbinden. Die PowerShell ist in alles aktuellen Windows Betriebssystem standardmäßig integriert.

Die Versionen

- Version 1.0 (2006) für Windows XP und höher
- Version 2.0 (2009) für Windows XP und höher
- Version 3.0 (2012) für Windows 7, Windows Server 2008 und höher
- Version 4.0 (2013) für Windows 7, Windows Server 2008 und höher
-Version 5.0 (2015) für Windows 7, Windows 8.1, Windows 10 ...
- Version 5.1 (2016) für Windows 7, Windows 8.1, Windows 10, Windows Server 2008 R2, 2012, 2012 R2, Windows Server 2016 ...

Die zentralen Funktionen der PowerShell

Die Befehle der Shell-Umgebung nennen sich Commandlets (Cmdlets). Die Cmdlets sind keine Stand-Alone-Anwendungen, sondern nur innerhalb der PowerShell-Umgebung ausführbar. Sie lassen sich direkt im Command Line Interface (CLI) eingeben. Die Ergebnisse der Cmdlets sind Objekte, die mit weiteren Befehlen verarbeitet werden können.

Die Syntax


Die Syntax der Cmdlets richtet sich nach einer Verb-Nomen-Struktur. Durch das vorangestellte Verb orientieren sich die Cmdlets an verschiedenen Aufgaben.
Beispiele für Befehle dieser Art sind:

- Get-Process
- Stop-Process
- Move-Item
- Copy-Item

Im Command Line Interface werden unvollständig eingegebene Kommandos wie Get-It durch drücken der Tabulator-Taste vervollständigt (in diesem Fall zu Get-Item). Ebenfalls möglich sind Abkürzungen der Befehle. Beispielsweise gps für Get-Process, mi für Move-Item oder gi für Get-Item. Mit dem Cmdlet Get-Command kann eine Liste aller Cmdlets ausgegeben werden. Dank der strikten und exakt definierten Syntax und sauberer Namenskonventionen der Cmdlets sind Skripte und Befehle recht gut lesbar und gut strukturiert.

Das Konzept der Pipelines in der PowerShell

Die PowerShell bietet das aus der Unix-Welt bekannte Konzept der Pipelines. Mit einer Pipeline kann die Ausgabe eines Kommandos (Cmdlets) an ein nächstes übergeben und dort weiterverarbeitet werden. Hierfür ist es erforderlich, die beiden Cmdlets über den Pipe-Operator (das Zeichen "|") miteinander zu verbinden. Beispielsweise ist es mit Pipelining möglich, Dateien eines Verzeichnisses abhängig von ihrer Größe sortiert auszugeben. Die Kommandozeile in der Shell muss hierfür folgendermaßen aussehen:

Der Editor

Mit Windows PowerShell ISE steht neben dem reinen Command Line Interface auch ein leistungsfähiger Skripteditor und Debugger zur Verfügung. Auch Windows PowerShell ISE ist in der Regel im Lieferumfang von Windows enthalten. Die Abkürzung ISE steht für "Integrated Scripting Environment" (integrierte Skript-Umgebung).
Dank des in der Umgebung integrierten Editors vereinfacht sich die Bearbeitung und das Erstellen von Skripten erheblich. Syntax Highlighting und Code Vervollständigung gehören zum Standard.
Neben dem Eingabefenster für die Befehle ist eine ausführliche Befehlsübersicht und -dokumentation in einem zusätzlichen Fenster enthalten.
Über die Debug-Funktionen ist es möglich, Haltepunkte zu setzen und Skripte Schritt für Schritt auszuführen und zu analysieren. Auch den Inhalt von Variablen zeigt der Debugger bei Bedarf an. Über Zusatzmodule ist der ISE fast beliebig erweitert werden.
Aber natürlich lassen Sie PowerShell Skripte auch komfortabel in anderen Editoren schreiben, wie z.B. Visual Studio Code, Texteditor oder in jeden anderen freien Editor.
Das Auslesen von Text Dateien und die Weiterverarbeitung der Daten, beschreibe ich in einen weiteren Artikel zur PowerShell