PowerShell für Dummies
PowerShell für Dummies
Bibliografische Information der Deutschen Nationalbibliothek
Die Deutsche Nationalbibliothek verzeichnet diese Publikation in der Deutschen Nationalbibliografie; detaillierte bibliografische Daten sind im Internet über http://dnb.d-nb.de
abrufbar.
© 2019 WILEY-VCH Verlag GmbH & Co. KGaA, Weinheim
Wiley, the Wiley logo, Für Dummies, the Dummies Man logo, and related trademarks and trade dress are trademarks or registered trademarks of John Wiley & Sons, Inc. and/or its affiliates, in the United States and other countries. Used by permission.
Wiley, die Bezeichnung »Für Dummies«, das Dummies-Mann-Logo und darauf bezogene Gestaltungen sind Marken oder eingetragene Marken von John Wiley & Sons, Inc., USA, Deutschland und in anderen Ländern.
Das vorliegende Werk wurde sorgfältig erarbeitet. Dennoch übernehmen Autoren und Verlag für die Richtigkeit von Angaben, Hinweisen und Ratschlägen sowie eventuelle Druckfehler keine Haftung.
Print ISBN: 978-3-527-71471-1
ePub ISBN: 978-3-527-81425-1
Coverfoto: audy_indy – stock.adobe.com
Korrektur: Petra Heubach-Erdmann, Düsseldorf
Andreas Dittfurth ist Autor verschiedener Bücher zu Microsoft- und Netzwerkthemen. Als langjähriger Microsoft Certified Trainer (MCT) arbeitet er im Bereich Netzwerk und Administration intensiv mit Windows Server und bezeichnet die PowerShell als weitreichendste und beste Entwicklung Microsofts. Seit über zwanzig Jahren arbeitet er im Bildungsbereich sowie als Consultant für Firmen, die er bei der Konzeption, Planung und Umsetzung von Bildungsprojekten mit virtuellen zwei- und dreidimensionalen Lernumgebungen unterstützt.
Ich freue mich, gemeinsam mit Ihnen die PowerShell zu erkunden. Nach der Lektüre dieses Buches und eigenen, ausführlichen Übungen werden Sie die Grundlagen der PowerShell beherrschen, die Programmiergrundlagen kennen und eigene Skripte und Module schreiben können. Zudem erhalten Sie Einblicke in einige Spezialthemen der PowerShell. Ich wünsche Ihnen viel Spaß bei der Beschäftigung mit diesem spannenden Thema.
Das Buch möchte zunächst Ihr Begleiter bei der interaktiven Arbeit in der PowerShell sein, um dann zum Ratgeber bei der Entwicklung mehrzeiliger Skripte und Problemlösungen zu werden. Ich habe alle Einheiten so konzipiert und aufgeteilt, dass Sie im Inhaltsverzeichnis, aber auch im Stichwortverzeichnis schnell die momentan für Sie interessanten Informationen finden können.
Dieses Buch ist konzipiert als Einführung in die PowerShell. So weit, so gut. Allerdings gibt es einerseits die Windows PowerShell, die nur unter Windows lauffähig und seit dem Jahr 2016 unverändert ist. Andererseits ist die PowerShell zusätzlich in veränderter Form unter dem Namen PowerShell Core unter den Betriebssystemen Linux, macOS und Windows verfügbar. Die Neuentwicklung für alle gängigen Betriebssysteme hat ihren Preis: PowerShell Core ist momentan noch nicht so leistungsfähig wie ihr großer Windows-Bruder. Sie wird erst im Laufe der Zeit den Windows-Vorgänger in ihrer Leistungsfähigkeit überholen und ablösen können.
Neu oder alt, nur Windows oder alle Plattformen? Die Entscheidung in Redmond, dem Firmensitz von Microsoft, ist klar: Dort setzt man künftig auf PowerShell Core. Trotzdem ist für Sie als Windows-Nutzer der direkte und sofortige Umstieg der beste Weg, und Nutzer von Linux und macOS können nicht erwarten, sofort mit vollem PowerShell-Funktionsumfang an Bord zu sein.
Ich habe mich entschieden, Ihnen die Syntax und den Leistungsumfang der Skriptsprache PowerShell zu zeigen, und zwar vornehmlich am neuesten Produkt PowerShell Core. Um Ihnen die volle Leistungsfähigkeit zeigen zu können, werde ich aber gelegentlich Beispiele und Erläuterungen bringen müssen, die nur unter der Windows PowerShell lauffähig sind.
Ich bin mir des Spagats bewusst. Folgt die Entwicklung von PowerShell Core als Open-Source-Produkt aber den Erwartungen, wird er in drei bis fünf Jahren überflüssig sein.
In diesem Buch finden Sie eine Vielzahl an PowerShell-Befehlen und -Anwendungsbeispielen. Zur besseren Lesbarkeit werden diese Textstellen vom Rest des Buchtexts durch eine besondere Schrift abgehoben, die so aussieht:
PowerShell-Befehlszeile
Manchmal finden Sie in diesen Textstellen kursive Begriffe wie beispielsweise C:\Programme\PowerShell\
Hauptversion
. In diesen Fällen handelt es sich um einen Platzhalter, der durch die konkrete Angabe ersetzt werden muss, wie hier C:\Programme\PowerShell\6
.
Finden Sie in den Textstellen mit PowerShell-Befehlen fett gesetzte Passagen, sind sie besonders wichtig, und ich möchte Sie auf diese Stellen besonders aufmerksam machen. Neu eingeführte Fachbegriffe sind kursiv ausgezeichnet, Menübefehle als KAPITÄLCHEN dargestellt.
Dieses Buch folgt der Reihenfolge, wie Sie bei Installation, erster Berührung und genauerem Kennenlernen der PowerShell vorgehen würden. Wenn Sie bereits erste Berührungen mit der PowerShell hatten, können Sie den ersten Teil querlesen, um vielleicht doch die eine oder andere Neuigkeit aufzuschnappen. Das Buch ist möglichst modular aufgebaut: Sie können also jedes Kapitel, das Sie besonders interessiert, einzeln lesen und müssen sich in den meisten Fällen nicht an die geschriebene Reihenfolge halten.
Verstehen Sie das Buch als eine Art Speisekarte, aus der Sie sich das herauspicken können, was Sie gerade besonders interessiert. Ein komplettes Durchlesen von vorn bis hinten kann Spaß machen, ist aber nicht unbedingt erforderlich. Über das Inhalts- und Stichwortverzeichnis können Sie schnell die momentan für Sie interessanten Informationen finden.
Auch wenn Sie sich in einigen Themen zu Hause fühlen, empfehle ich Ihnen, durch dazugehörige Kapitel zumindest durchzublättern. Wer weiß schon, ob sich nicht doch noch interessante Details oder Zusammenhänge finden lassen?
In Büchern der … für Dummies-Reihe werden anspruchsvolle Themen verständlich präsentiert, ohne dass vom Leser übertrieben viel Vorwissen erwartet wird. Diesen bewährten Weg schlage ich auch mit diesem Buch ein.
Trotzdem gehe ich davon aus, dass Sie sich in Ihrem Betriebssystem gut auskennen – sei es Windows, Linux oder macOS. Außerdem haben Sie idealerweise schon mit Computernetzwerken gearbeitet. Ich erwarte nicht, dass Sie ein erfahrener Administrator sind oder programmieren können. PowerShell-Vorkenntnisse werden selbstverständlich nicht vorausgesetzt.
Das Buch besteht aus fünf Teilen, die jeweils mehrere Kapitel haben. Die Inhalte reichen von der Installation und dem ersten Aufruf der PowerShell bis hin zum Skripting. Spezialthemen und Anwendungsbeispiele runden das Buch ab.
Teil I hilft Ihnen bei Installation und Inbetriebnahme von PowerShell Core unter Windows, Linux und macOS. Darüber hinaus erfahren Sie, welche Bestandteile Sie unter Windows verwenden, wenn Sie die Windows PowerShell einsetzen.
In Teil II lernen Sie die Sprachelemente der PowerShell kennen. Sie lesen, wie Sie mit PowerShell-Befehlen arbeiten, Objekte über die Pipeline übergeben, mit Aliassen und Profilen arbeiten, Texte bearbeiten und was PowerShell-Provider und -Laufwerke sind.
Teil III führt in die Programmierung mit der PowerShell ein. Sie lernen den Umgang mit Skripten und entwickeln eigene Skripte und Module.
Teil IV zeigt Ihnen anhand ausgewählter Spezialthemen fortgeschrittene Techniken der PowerShell.
Teil V enthält nützliche Listen und gibt Hinweise, was Sie bei der Arbeit mit der PowerShell beachten sollten.
Damit Sie die Codebeispiele nicht abtippen müssen, finden Sie die Beispiele aller Kapitel zum Download unter der Adresse https://www.wiley-vch.de/ISBN9783527714711
.
Und jetzt wünsche ich Ihnen viel Spaß bei der PowerShell, und zwar nicht nur beim Lesen, sondern auch beim ausführlichen Testen!
Teil I
Kapitel 1
IN DIESEM KAPITEL
Bevor Sie sich intensiv mit inhaltlichen Dingen in der PowerShell beschäftigen, erfahren Sie einige Dinge zu ihrem Hintergrund, die Ihnen einzuordnen helfen, was die PowerShell ist und warum sie sich so entwickelt hat, wie sie es getan hat.
Sie erhalten in diesem Kapitel kurze Einblicke zur Geschichte der PowerShell und zu den Absichten der Entwickler. Ich kläre, warum es die Windows PowerShell und PowerShell Core gibt und wie sie zusammenhängen. Letztlich erhalten Sie einen Ausblick auf zukünftige Versionen der PowerShell und eine Empfehlung, welche Sie einsetzen sollten.
Beginnen Sie mit Teil II und schauen Sie in den Kapiteln des ersten Teils später wieder vorbei. In diesem Teil installieren Sie Ihre Arbeitsumgebung und richten sie so ein, dass Sie inhaltlich loslegen können.
PowerShell wurde speziell für die Systemverwaltung und -automatisierung entworfen. Sie erlaubt Zugriff auf WMI-Klassen, COM-Objekte sowie auf das gesamte .NET Framework. Die PowerShell verbindet die aus Unix-Shells bekannte Philosophie von Pipes und Filtern mit objektorientierter Programmierung.
Adressiert werden gleichermaßen Administratoren und Programmierer. Vornehmlich Administratoren können weiterhin einfache Befehle an einer Kommandozeile ausführen und miteinander verknüpfen. Vornehmlich Programmierer können komplexe Skripte mit der eigens dafür entwickelten PowerShell Scripting Language schreiben.
Um zu verstehen, welches Konzept hinter der PowerShell steht, schauen wir kurz auf die Situation unter Windows um die Jahrtausendwende:
In dieser Umgebung entwickelte Jeffrey Snover 2002 die Idee einer Plattform der nächsten Generation für die administrative Automatisierung. Traditionelle Verwaltungsprobleme sollten durch Nutzung der von Microsoft um das Jahr 2000 bereitgestellten .NET-Plattform gelöst werden.
Snover hatte nicht nur die Skriptentwickler im Blick, sondern erwartete erhebliche Vorteile auch für Tester, Power-User und Administratoren.
Das Produkt unter dem vorläufigen Namen Monad nutzt die .NET Common Runtime, um ein mächtiges, konsistentes, intuitives, erweiterbares und nützliches Werkzeug bereitzustellen, das die Administrationskosten senkt und das Leben von Nicht-Programmierern erheblich vereinfacht.
Folgende Punkte sollten bei der Umsetzung der Ziele helfen:
Sie vermuten es sicherlich bereits: Die Rede ist von der PowerShell. 2006 erfolgt die Umbenennung von Monad in PowerShell.
Im selben Jahr legt Microsoft fest, dass Microsoft Exchange Server 2007 per PowerShell administriert wird und auch die grafische Benutzeroberfläche auf PowerShell aufsetzt. Die Windows PowerShell Version 1 wird veröffentlicht und zum Download angeboten.
2007 wird die Windows PowerShell Teil von Microsofts Kriterienkatalog (Common Engineering Criteria), dem jedes Microsoft-Server-Produkt entsprechen soll. Jedes Server-Produkt von Microsoft soll von nun an PowerShell unterstützen.
Dies bedeutet ab 2009 für die Windows PowerShell ab Version 2 den endgültigen Durchbruch als zentrales Verwaltungs- und Automatisierungswerkzeug in Windows-Betriebssystemen. Sie wird ab sofort als fester Bestandteil von Windows-Betriebssystemen ausgeliefert.
Im weiteren Verlauf des Buches werden Sie den Begriff PowerShell in verschiedenen Varianten für unterschiedliche Kontexte lesen:
PowerShell:
allgemein, bezeichnet das Gesamtprodukt und gilt für jede Version
Windows PowerShell:
bezeichnet die mit den Windows-Betriebssystemen ausgelieferte PowerShell, die ausschließlich unter Windows lauffähig ist
PowerShell Core:
das neue Open-Source-Projekt, das plattformunabhängig auf den Betriebssystemen Windows, Linux und macOS installiert werden kann
Ab Version 2 steht die Windows PowerShell als Bestandteil des Windows Management Frameworks mit der jeweils identischen Versionsnummer zum Download bereit. Damit kann eine neuere Version der Windows PowerShell auch auf älteren Betriebssystemversionen installiert werden.
Bei der Windows PowerShell folgen Version 5 und Version 5.1 zeitlich relativ eng aufeinander. Das liegt daran, dass Windows Server 2016 erst später als Windows 10 erschien. In den Monaten zwischen Erscheinen von Windows 10 und Windows Server 2016 hat sich die Windows PowerShell weiterentwickelt. Letztlich hat man sich entschieden, Windows Server 2016 direkt mit PowerShell Version 5.1 auszuliefern und unter Windows 10 ein Update auf Version 5.1 vorzunehmen.
Die Windows PowerShell wird in der Windows-Welt zu dem Werkzeug für Administratoren und Programmierer. Fast alles ist bei der System- und Netzwerkverwaltung mit der Windows PowerShell möglich, Anwendungen bringen ihren eigenen Satz an PowerShell-Befehlen für die Verwaltung mit. Einige Einstellungen können ausschließlich über die PowerShell vorgenommen werden.
Im ersten Erscheinungsjahr 2006 ist die PowerShell als Produkt und Sprache zwar noch sehr jung, aber seit Version 5.1 gilt sie als fertig und abgeschlossen.
Die Windows PowerShell hat nachhaltig die Windows-Welt beeinflusst und beispielsweise die Arbeit von Windows-Administratoren deutlich verändert.
Das ist nicht korrekt. Bereits vor Fertigstellung der Version Windows PowerShell 5.1 äußerten sich Erfinder Jeffrey Snover und sein Projektteam auf verschiedenen Konferenzen dahin gehend, dass sie alles umgesetzt haben, was sie sich mit der Windows PowerShell vorgenommen haben (»we're done!«).
Es wird unter Windows keine neuen Versionen geben, da es sich um ein fertiges Produkt handelt. Mit einer weiteren Unterstützung und der Bereinigung auftretender Fehler ist zu rechnen.
2016 verkündet Microsoft, dass PowerShell unter der sogenannten MIT-Lizenz nunmehr Open Source und plattformübergreifend entwickelt wird. Das Produkt heißt jetzt PowerShell Core, die Versionszählung beginnt mit Version 6.0 und setzt damit die Versionszählung der Windows PowerShell fort. Veröffentlicht wird PowerShell Core auf einer Plattform für Projekte aus der Software-Entwicklung, dem Onlinedienst GitHub. Die erste Version von PowerShell Core (Version 6.0) erschien Anfang 2018, Version 6.1 bereits etwa neun Monate später.
Microsoft trägt damit seiner Cloud-Strategie (»Mobile first, Cloud first«) Rechnung und möchte PowerShell für diese heterogenen Umgebungen als universelles Werkzeug für alle Administratoren anbieten, gleich welches Betriebssystem oder welche Anwendung administriert werden soll.
Eine plattformübergreifende Bereitstellung der PowerShell hat auch zur Konsequenz, dass das .NET Framework nicht zur Verfügung steht, da es ausschließlich für Windows verfügbar ist. Um eine ähnliche Funktionalität auch für andere Betriebssysteme zur Verfügung zu stellen, entwickelte Microsoft die Frame-Variante .NET Core.
.NET Core wurde von Grund auf neu entwickelt und hatte zu Beginn des Jahres 2015 etwa ein Zehntel der Funktionalität des klassischen .NET Frameworks.
Durch eine leichtere Portierbarkeit auf Microsoft-fremde Plattformen sowie die Entwicklung als Open-Source-Projekt unter Beteiligung der weltweiten Entwicklergemeinschaft scheint .NET Core die ideale Basis für PowerShell Core zu sein.
Tabelle 1.1 gibt Ihnen einen Überblick über die PowerShell-Versionen und zeigt, wo und wann die einzelnen Versionen erschienen sind.
Version |
Vorinstalliert? |
Erscheinungsjahr |
1 Windows PowerShell |
Nein, Download für Windows-Betriebssysteme ab Windows XP SP2 |
2006 |
2 Windows PowerShell |
Ja, unter Windows 7 und Windows Server 2008 R2 |
2009 |
3 Windows PowerShell |
Ja, unter Windows 8 und Windows Server 2012 |
2012 |
4 Windows PowerShell |
Ja, unter Windows 8.1 und Windows Server 2012 R2 |
2013 |
5 Windows PowerShell |
Ja, unter Windows 10 |
2015 |
5.1 Windows PowerShell |
Ja, unter Windows 10 (Build 1607) und Windows Server 2016 |
2016 |
6 PowerShell Core |
Nein, Downloadpaket für Windows, Linux und macOS |
2018 |
6.1 PowerShell Core |
Nein, Downloadpaket für Windows, Linux und macOS |
2018 |
Die Versionen 1 bis 5.1 markieren seit 2006 die Zeit der PowerShell als Komponente ausschließlich in Windows-Betriebssystemen mit tiefer Einbindung ins System durch die Basis .NET Framework.
2018 bedeutet den Wendepunkt für die PowerShell. Als PowerShell Core beginnt mit der Version 6.0 eine neue Zeitrechnung als plattformübergreifende Open-Source-Software. Durch das neue, noch nicht annähernd so mächtige .NET Core beginnt eine neue Reise mit momentan (noch) verminderter Leistungsfähigkeit.
Es ist sicher, dass es keine neuen Versionen der Windows PowerShell geben wird. Die Zukunft liegt bei der plattformübergreifenden Open-Source-Variante PowerShell Core.
Lassen Sie mich einen Blick in die Glaskugel wagen, welche Entwicklung die PowerShell in den nächsten Jahren wahrscheinlich nehmen wird.
Sie können mich in einigen Jahren gern ansprechen, wie falsch ich doch gelegen hätte. Ich werde alles auf meine Glaskugel schieben …
Meine eigenen Einschätzungen in Ehren, ich möchte Ihnen allerdings aktuelle Einschätzungen des Microsoft-Entwicklerteams nicht vorenthalten. Die folgenden Aussagen stammen vom PowerShell-Erfinder Jeffrey Snover aus seiner Keynote zur europäischen PowerShell-Konferenz in Hannover im April 2018:
Die Folien des Vortrags, aus dem ich zitiert habe, finden Sie unter der Adresse https://github.com/psconfeu/2018/blob/master/Jeffrey%20Snover/Keynote_psconfeu_2018.pdf
. Wenn Sie den Vortrag als Video anschauen wollen, besuchen Sie die Adresse https://www.youtube.com/watch?v=zy4fDSdrM7M
.
Mittelfristig soll PowerShell 7 neben Windows PowerShell 5.1 Bestandteil von Windows werden.
Für Sie bedeutet das bei der Lektüre:
- Alle beschriebenen Inhalte sind selbstverständlich nach wie vor gültig.
- Achten Sie auf die PowerShell-Versionsnummern: Versionen ab 6 sind PowerShell (Core), Versionen bis 5.1 Windows PowerShell.
- Da zukünftige Versionen nicht »PowerShell Core«, sondern »PowerShell« heißen werden, verstehen Sie den Zusatz »Core« bitte als Hinweis, dass es sich hierbei um die plattformübergreifende moderne PowerShell handelt und nicht um die auf Windows beschränkte Windows PowerShell.
Wenn Sie ein aktuelles Windows-Betriebssystem verwenden, auf dem die Windows PowerShell vorinstalliert ist, spricht momentan alles dafür, diese zu verwenden. Durch die tiefe Einbettung in das Windows-System durch das .NET Framework stehen Befehle und Funktionen für alle denkbaren Aufgaben zur Verfügung. Zudem unterscheiden sich die Windows PowerShell und PowerShell Core syntaktisch nicht. PowerShell Core kann momentan nur einen deutlich kleineren Befehlssatz verwenden, der erst nach und nach erweitert werden wird. Wieso also momentan auf die vorhandenen Möglichkeiten in Windows-Systemen verzichten?
Wenn Sie PowerShell Core kennenlernen, mit der Windows PowerShell vergleichen oder sich mit der Administration heterogener Umgebungen vertraut machen möchten, können Sie PowerShell Core auf Windows-Systemen parallel zur Windows PowerShell installieren und betreiben.
Als Nutzer von Linux oder macOS führt kein Weg an PowerShell Core vorbei, da Ihnen die Windows PowerShell dort nicht zur Verfügung steht. Auch wenn PowerShell Core momentan noch nicht an die Funktionalität der Windows PowerShell heranreicht, können Sie sehr gut die Syntax und das Konzept der PowerShell kennenlernen und die stetige Funktionserweiterung begleiten.
Übrigens: Alle verwendeten Befehle und Beispiele im Buch funktionieren sowohl unter den Versionen der Windows PowerShell als auch der PowerShell Core.
Die PowerShell hat mit ihrer Kombination aus konsistentem Werkzeug für Administrations- und Automatisierungsaufgaben in Windows sowie eigener Skriptsprache eine große Lücke in der Windows-Welt gefüllt und den Arbeitsalltag von Windows-Administratoren und -Entwicklern verändert.
Bis zu Windows PowerShell Version 5.1 basiert die PowerShell auf .NET Framework und ist ausschließlich für Windows-Betriebssysteme verfügbar.
Ab Version 6.0 basiert die PowerShell Core auf .NET Core, ist Open Source und auch für Linux und macOS verfügbar.
Im nächsten Kapitel erfahren Sie, wo Sie in Windows die PowerShell finden und wie Sie sie auf den verschiedenen Systemen installieren.