Bei PowerShell handelt es sich um eine objektorientierte Programmier– und Skriptsprache für WindowsBetriebssysteme, die mit einem eigenen Command Line Interface (CLI) ausgestattet ist. Durch den Einsatz von PowerShell lassen sich zahlreiche Aufgaben automatisieren und zusätzliche Tools programmieren. Seit Anfang 2016 ist sie als Open-Source-Projekt auch für andere Betriebssysteme erhältlich.

Was ist eine Shell?

Bei einer Shell handelt es sich um eine spezielle Computeranwendung, die in der Regel eine textbasierte Benutzeroberfläche zur Verfügung stellt. Über diese können Computernutzer mit dem Betriebssystem des jeweiligen Computers interagieren und einen direkten Zugriff auf Services des Betriebssystems erhalten. Eine Shell fungiert in erster Linie als eine sogenannte „Mensch-Maschine-Schnittstelle“ (MMS). Shells nutzen das Kernel eines Betriebssystems genauso wie alle anderen Programme. Obwohl die Interaktion über die Shell in der Regel über eine textbasierte Befehlszeilenschnittstelle (Command Line Interface) realisiert wird, kommen auch oft grafische Benutzeroberflächen für die Interaktion zum Einsatz.

Was ist eine PowerShell?

Bei der PowerShell handelt es sich um eine interaktive Befehlszeilen-Shell (CLI) für Windows-Systeme, die als direkter Nachfolger der Windows-Eingabeaufforderung (CMD) angesehen wird. Sie ist allerdings wesentlich leistungsstärker und stellt einen viel größeren Befehls- und Funktionsumfang bereit. Mit der PowerShell lässt sich eine Vielzahl unterschiedlicher Aufgaben auf dem Betriebssystem automatisieren. Sie kommt häufig im Rahmen des Systemmanagements und der Verwaltung von Windows-Systemen zum Einsatz. Für die Erstellung von umfangreichen Skripten stehen verschiedene Logik- und Kontrollstrukturen bereit, wie zum Beispiel:

– FOR- und WHILE-Schleifen

– IF-Abfragen

– reguläre Ausdrücke

PowerShell-Skripte setzen sich aus den sogenannten „Cmdlets“, bei denen sich um Befehle der PowerShell handelt, und den dazugehörigen Logikausdrücken zusammen. Grundsätzlich arbeitet die PowerShell objektorientiert, sodass dem Nutzer das gesamte .NET-Framework inklusive aller COM-Objekte zur Verfügung steht. Darüber hinaus lässt sich auch ein Zugriff auf die Windows Management Instrumentation (WMI) realisieren, über die sich detaillierte Systeminformationen abfragen lassen.

Es lassen sich außerdem Befehle und Skripte remote über ein Netzwerk auf fremden Computern ausführen. Dadurch eignet sich die PowerShell besonders gut für diverse Administrations- und Wartungsaufgaben in großen Rechenzentren. Bei PowerShell kommen im Rahmen der objektorientierten Programmierung die von Linux– und Unix-Shells bekannte Filter- und Pipe-Funktionen zum Einsatz. So können Nutzer beispielsweise Kommandozeilenbefehle miteinander kombinieren und ausführen. PowerShell ist kostenloser Bestandteil aller aktuellen Windows-Versionen.

Mehr zum Thema:
Software Defined Storage mit CEPH

Die Funktionsweise im Detail

Die PowerShell setzt sich grundsätzlich aus zwei Komponenten zusammen, und zwar der PowerShell Engine und der PowerShell Scripting Language. Beide Bestandteile lassen sich sowohl getrennt als auch in Kombination miteinander nutzen, um Nutzern eine bestmögliche Flexibilität bereitzustellen.

Die PowerShell-Engine: Der Anwender erhält über den Kommandozeileninterpreter (Command-Line Interpreter) von PowerShell via Tastatureingaben den Zugang zu wichtigen Funktionalitäten des Betriebssystems. Die Befehle des Programms werden als Cmdlets bezeichnet. Sie setzen sich stets aus einem Verb und einem Nomen im Singular zusammen, wie zum Beispiel „Show-Date“ oder „Stop-Process“. Es gibt mehr als 100 Kern-Cmdlets, die häufig genutzte Standardbefehle umfassen und über sogenannte „Aliase“ verfügen, um beispielsweise Linux-Nutzern den Umstieg zu erleichtern. So hat beispielsweise der Befehl „cd“ den Alias „Set-Location“. Alle zur Verfügung stehenden Aliase lassen sich mit dem Befehl „Get-Alias“ abfragen.

Die PowerShell Scripting Language: Vieles an der Skriptsprache von PowerShell ist von anderen Programmier- und Skriptsprachen, wie zum Beispiel JavaScript, C# oder Java, übernommen. Mit der PowerShell-Skriptsprache lassen sich nicht nur eigene Cmdlets erstellen, sondern es lassen sich auch mehrere Befehle in Folge in einer Skript-Datei verpacken und nacheinander ausführen.

 

Damit lässt sich eine Vielzahl unterschiedlicher Einsatzszenarien realisieren, wie beispielsweise die Automatisierung von Kontroll- und Überwachungsprozessen. PowerShell-Skripte sind dabei stets mit einer Anwendungsbeschreibung versehen und werden mit dem vollständigen Dateipfad ausgeführt.

Wo kommt PowerShell vorwiegend zum Einsatz?

Mit der PowerShell können viele Systemverwaltungsaufgaben deutlich effizienter gestaltet und größtenteils automatisiert werden. Im Folgenden gehen wir auf 4 typische Einsatzszenarien ein.

  1. Parallele Umbenennung mehrerer Dateien: Angenommen, Sie müssen 500 Text-Dokumente des Schemas Dokument-Name(1).txt so umbenennen, dass die Bindestriche im Namen durch Unterstriche ersetzt werden. Wenn man ein jedes Dokument einzeln umbenennen müsste, wäre das eine Mammutaufgabe, die sehr viel Zeit beanspruchen würde. Stattdessen kann man die Pipelining-Funktionalität in PowerShell nutzen um alle Dateien gleichzeitig umzubenennen.
  2. Aktive Services auf einem Windows-PC überprüfen: Vor der Installation einer neuen Sicherheits-Software sollte grundsätzlich zunächst überprüft werden, welche Services auf einem bestimmten Computer bereits vorhanden sind. Durch die Filterfunktion in Kombination mit dem Cmdlet „Get-Service“ können sämtliche Dienste aufgelistet und per Pipeline weitergeleitet werden.
  3. Ereignisprotokoll nach Systemabstürzen analysieren: Ereignisprotokolle stellen wichtige Informationen über Fehlermeldungen im Betriebssystem, in Anwendungen oder in der Hardware eines Geräts bereit. Mit dem Cmdlet „Get-EventLog“ lassen sich diese Protokolle anzeigen und durchsuchen.
  4. Services auf einem Remotecomputer verwalten: Über die Windows Management Instrumentation (WMI) können Systemadministratoren Zugriff auf sämtliche Funktionalitäten und Einstellungen von Windows-Rechnern bekommen. In der PowerShell kann das Cmdlet „Get-WmiObject“ angewandt werden, um die PowerShell als Systemverwaltungstool verwenden zu können. Per Fernzugriff lassen sich so sämtliche Funktionalitäten des Fremdrechners einstellen und verwalten.
Mehr zum Thema:
Was ist RAM?
Letzte Artikel von Daniel Faust (Alle anzeigen)