Butz | PowerShell – kurz & gut | E-Book | sack.de
E-Book

E-Book, Deutsch, 224 Seiten

Reihe: O'Reilly`s kurz & gut

Butz PowerShell – kurz & gut

Für PowerShell 7 und Windows PowerShell 5

E-Book, Deutsch, 224 Seiten

Reihe: O'Reilly`s kurz & gut

ISBN: 978-3-96010-406-3
Verlag: O'Reilly
Format: EPUB
Kopierschutz: 6 - ePub Watermark



Der kompakte Schnellstart für die PowerShell 7


Handlich und übersichtlich: ideal zum Nachschlagen der PowerShell-Features
Themen sind Objektorientierung und Pipelining, Systemadministration, Webservices, Remoteadministration
Zeigt die Unterschiede zwischen PowerShell 7 und Windows PowerShell 5
Expertenwissen vom deutschen PowerShell-Kenner Thorsten Butz


Die PowerShell ist in der Version 7 zu einer plattformunabhängigen Lösung für Windows, Linux und MacOS gereift. Längst ist sie mehr als ein Werkzeug zur Windowsadministration. Sie verfolgt einen für eine Scriptsprache einzigartigen Ansatz: Objektorientierung und Pipeling kombiniert sie mit einer einprägsamen, leicht erlernbaren Skriptsprache. Gleichzeitig erweitert sich mit PowerShell 7 der Anwendungsbereich spürbar – ihre Verwendung in Microsoft 365, Azure, AWS und GoogleCloud beschleunigt die Entwicklung zu einer flexibel erweiterbaren Shell.


Thorsten Butz beschreibt in diesem Buch die Grundlagen der PowerShell 7. Sie lernen, Skripte zu schreiben, den Funktionsumfang der Shell zu erweitern und Befehle remote auszuführen. Ein besonderes Augenmerk liegt hierbei auf der Kompatibilität zur Windows PowerShell 5 und möglichen Besonderheiten, die sich im Zusammenspiel mit älteren Schnittstellen ergeben.
Butz PowerShell – kurz & gut jetzt bestellen!

Autoren/Hrsg.


Weitere Infos & Material


KAPITEL 2
Hallo PowerShell!
Die PowerShell ist ein ursprünglich von Microsoft entwickeltes plattformübergreifendes Werkzeug zur Automation und Konfiguration der IT-Infrastruktur, bestehend aus einer Skriptsprache und einem Kommandozeileninterpreter, der Shell. PowerShell ist eine objektorientierte Skriptsprache, die die Klassen und Datentypen des .NET Framework mit einer benutzerfreundlichen Befehlssyntax zugänglich macht. Die PowerShell steht sowohl im Quelltext als auch kompiliert für zahlreiche Betriebssysteme auf den Projektseiten zum Download bereit: https://github.com/PowerShell/PowerShell. Seit Version 6 steht der Code unter der MIT-License. Details zur Installation und den betriebssystemspezifischen Unterschieden finden Sie in Kapitel 3, Installieren und Aktualisieren der PowerShell. Get-Uptime Get-FileHash -Path 'helloworld.ps1' Test-Connection -TargetName 'www.oreilly.de' -TcpPort 80 PowerShell-Befehle sind idealerweise auch für Einsteiger gut les- und erinnerbar. Sogenannte Cmdlets, wie Get-Uptime im Beispiel oben, bestehen prinzipiell aus einem Verb (Get) und einem Nomen (Uptime) und sind exklusiv in der PowerShell ausführbar. Die Shell unterstützt den Anwender darüber hinaus mithilfe der Autovervollständigung beim (Wieder-)Finden der gewünschten Befehle, Parameter und Argumente. Get-Uptime -since Get-Process -Name 'pwsh' Compress-Archive -Path '~/*' -DestinationPath 'backup.zip' Einem Cmdlet folgen gegebenenfalls Parameter, gut erkennbar an dem vorangestellten Bindestrich, und Argumente. Im Beispiel oben verwenden wir die Tilde ~, die in der PowerShell (und vielen anderen Shells) das Heimatverzeichnis repräsentiert. In vielen Fällen unterstützt Sie die Shell mithilfe der Tabulatortaste nicht nur beim Vervollständigen des Cmdlet-Namens und dessen Parametern, auch Argumente können in einigen Fällen automatisch vervollständigt werden. Hinweis Um Ihnen Werte anbieten zu können, die Sie mithilfe der Autovervollständigung als Argument übergeben, muss der PowerShell-Interpret gültige Werte bereits ermitteln, bevor Sie diese Werte eintippen. Im Beispiel Get-Process -Name 'pwsh' kann die PowerShell Ihnen 'pwsh' anbieten, da Sie im Hintergrund die Liste aktiver Prozesse bereits abgerufen hat. Das Gleiche wird mit Compress-Archive -Path '~/*' -DestinationPath 'backup.zip' nicht funktionieren – woher sollte das System wissen, wie Sie Ihre Zip-Datei nennen möchten? Cmdlets sind das Herzstück der PowerShell. Die Ausführung von Programmcode ist aber nicht auf Cmdlets beschränkt. Sie können ebenfalls die althergebrachten Kommandozeilenprogramme (englisch Native Commands) verwenden. nslookup www.oreilly.de ping www.oreilly.de Ebenso sind einfache (Rechen-)Operationen unmittelbar ausführbar. 42 + 23 60 * 60 7 % 2 'Power' + 'Shell' Betrachtet man die PowerShell ein wenig technischer, stößt man schnell auf das bereits eingangs erwähnte .NET Framework. [System.Net.Dns]::GetHostByName('www.oreilly.de') [System.Net.Sockets.TcpClient]::new('188.40.159.226',80) Das .NET Framework ist Microsofts zentrale Sammlung von Klassenbibliotheken und Schnittstellen zur Entwicklung von Software in Hochsprachen wie C#. Mittels PowerShell erlangt der Anwender Zugriff auf diese Sammlung Zehntausender Programmbausteine, wodurch sich der Einsatzbereich der Shell explosionsartig erweitert. Mehr zu der speziellen Syntax in diesem Kontext erfahren Sie im Abschnitt »Rückgriff auf das .NET Framework« auf Seite 115. Das LEGO®-Prinzip Als Klassenbibliothek bezeichnet man eine Sammlung von Standard-implementierungen häufig benötigter Datenstrukturen und Algorithmen beispielsweise zum Dateizugriff, zur Netzwerkkommunikation, zum Zugriff auf Datenbanken oder zur Darstellung grafischer Benutzeroberflächen. Diese Softwarebausteine werden typischerweise vom Softwareentwickler zu einem größeren Ganzen zusammengefügt und mit eigener Programmlogik ergänzt. Schlicht ausgedrückt, kann man dies mit dem sehr erfolgreichen Spielprinzip eines dänischen Spielzeugherstellers vergleichen: Einzelne Bausteine lassen sich auf eine vorgegebene Weise zusammenstecken und erlauben so sehr einfach das Erschaffen komplexer Gegenstände aus Standardelementen. Was ist ein Cmdlet?
Im Idealfall finden Sie in der PowerShell ein sogenanntes Cmdlet, das die von Ihnen gewünschte Aufgabe erfüllen kann. Angenommen, Sie suchten nach einer Aufzählung aller aktiven Prozesse. Get-Process Nehmen wir weiter an, dass Sie nun im Anschluss einen ganz bestimmten Prozess suchen und beenden wollen. Get-Process -Name 'pwsh' Stop-Process -Name 'pwsh' Vergleichen wir diese Codebeispiele mit dem nachfolgenden Listing. [System.Diagnostics.Process]::GetProcesses() [System.Diagnostics.Process]::GetProcessesByName('pwsh').kill() Ganz offenkundig handelt es sich um die gleiche Funktionalität: Zunächst fragen Sie nach aktiven Prozessen, im Anschluss beenden Sie einen spezifischen Prozess. Dies ist kein Zufall, es handelt sich im Inneren um denselben Code. Ein Cmdlet, hier Get-Process, ist oftmals nur eine benutzerfreundliche Hülle, ein Frontend für eine Softwareroutine, die unabhängig von der PowerShell implementiert wurde. Der Begriff Cmdlet (gesprochen Commandlet) ist ein Kunstwort, es beschreibt ein Kommando, das einzig in der PowerShell ausführbar ist und der benutzerfreundlichen Verb-Nomen-Syntax folgt. Allgemein spricht man von einem Befehl (englisch Command), wenn die genaue Unterscheidung (Cmdlet, Applikation …) irrelevant ist oder man mehrere Befehle zu einer komplexen Anweisung zusammenführt, zum Beispiel mittels Pipelining. Ein Befehl kann im allgemeinen Sprachgebrauch praktisch alles sein, was den Computer dazu bringt, eine Aktion auszuführen. Cmdlets im engeren Sinn werden in einer .NET-Sprache wie C# entwickelt und in *.dll-Dateien1 übersetzt. Sie werden auch binäre Cmdlets genannt. Zusammen mit einem beschreibenden Manifest, einer *.psd1-Datei und gegebenenfalls weiteren Ressourcen wie Hilfedateien werden diese als sogenannte Module bereitgestellt. Get-Command -Name 'Get-Process' | Select-Object -property CommandType, Name, Version, Source, DLL Get-Command -CommandType 'Cmdlet' Zu welchem Modul ein Cmdlet gehört, erkennen Sie in der Ausgabe von Get-Command (siehe Beispiel oben) an der Eigenschaft Source. So können Sie unter anderem nachvollziehen, welche Cmdlets ähnliche Aufgaben erfüllen. Binären Cmdlets gleichgestellt sind sogenannte Advanced Functions, wie etwa Compress-Archive. Advanced Functions sind in der Sprache PowerShell implementiert, ihre Funktionsweise können Sie jederzeit im Quelltext nachvollziehen. Get-Command -Name 'Compress-Archive' Get-Command -Name 'Compress-Archive' | Select-Object -ExpandProperty Definition Get-Command -CommandType 'Function' Begriffsverwirrung In Version 1 der PowerShell existierten ausschließlich binäre Cmdlets, sie wurden in einer .NET-Hochsprache programmiert und übersetzt/kompiliert. Mit Einführung der flexibleren Advanced Functions in PowerShell-Version 2 wurde das Kunstwort Cmdlet gleichsam zum Oberbegriff, was bis zum heutigen Tag mancherorts für Verwirrung sorgt. So erweckt die Ausgabe von Get-Command den Eindruck, nur binäre Cmdlets seien echte Cmdlets. Technisch ist dies weitgehend irrelevant. Aus Sicht des Anwenders sind jedoch das einprägsame Benennungskonzept, die Objektorientierung und das Pipelining die entscheidenden Vorteile gegenüber Applikationen wie ipconfig.exe (Windows) oder ip bzw. ifconfig (Linux, macOS). Und dies umfasst mehr als nur die binären Cmdlets, sodass ich in diesem Buch Cmdlet als Oberbegriff verwenden werde. Objektorientierung und Pipeline
Ich habe die Pipeline...


Thorsten Butz ist langjähriger Microsoft Certified Trainer und Consultant. Er begann seine Karriere als Netzwerkspezialist und Unix-Enthusiast beim Provider Network. Seit Windows 2000 begleitet er intensiv Microsofts Server-Technologien, mit dem besonderen Augenmerk auf Interoperabilität und Automation.


Ihre Fragen, Wünsche oder Anmerkungen
Vorname*
Nachname*
Ihre E-Mail-Adresse*
Kundennr.
Ihre Nachricht*
Lediglich mit * gekennzeichnete Felder sind Pflichtfelder.
Wenn Sie die im Kontaktformular eingegebenen Daten durch Klick auf den nachfolgenden Button übersenden, erklären Sie sich damit einverstanden, dass wir Ihr Angaben für die Beantwortung Ihrer Anfrage verwenden. Selbstverständlich werden Ihre Daten vertraulich behandelt und nicht an Dritte weitergegeben. Sie können der Verwendung Ihrer Daten jederzeit widersprechen. Das Datenhandling bei Sack Fachmedien erklären wir Ihnen in unserer Datenschutzerklärung.