PowerShell - kurz & gut -  Thorsten Butz

PowerShell - kurz & gut (eBook)

Für PowerShell 7 und Windows PowerShell 5
eBook Download: EPUB
2021 | 5. Auflage
224 Seiten
O'Reilly Verlag
978-3-96010-406-3 (ISBN)
Systemvoraussetzungen
14,90 inkl. MwSt
  • Download sofort lieferbar
  • Zahlungsarten anzeigen

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.



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.

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.

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...

Erscheint lt. Verlag 2.2.2021
Reihe/Serie O'Reilly`s kurz & gut
Verlagsort Heidelberg
Sprache deutsch
Themenwelt Mathematik / Informatik Informatik Betriebssysteme / Server
Schlagworte Administration • CmdLets • Kommandozeile • Monad • PowerShell • PowerShell 7 • PowerShell Befehle • PowerShell Skripte • Scripting • Windows Administration • Windows PowerShell • Windows PowerShell 5 • Windows Server
ISBN-10 3-96010-406-5 / 3960104065
ISBN-13 978-3-96010-406-3 / 9783960104063
Haben Sie eine Frage zum Produkt?
Wie bewerten Sie den Artikel?
Bitte geben Sie Ihre Bewertung ein:
Bitte geben Sie Daten ein:
EPUBEPUB (Wasserzeichen)
Größe: 9,6 MB

DRM: Digitales Wasserzeichen
Dieses eBook enthält ein digitales Wasser­zeichen und ist damit für Sie persona­lisiert. Bei einer missbräuch­lichen Weiter­gabe des eBooks an Dritte ist eine Rück­ver­folgung an die Quelle möglich.

Dateiformat: EPUB (Electronic Publication)
EPUB ist ein offener Standard für eBooks und eignet sich besonders zur Darstellung von Belle­tristik und Sach­büchern. Der Fließ­text wird dynamisch an die Display- und Schrift­größe ange­passt. Auch für mobile Lese­geräte ist EPUB daher gut geeignet.

Systemvoraussetzungen:
PC/Mac: Mit einem PC oder Mac können Sie dieses eBook lesen. Sie benötigen dafür die kostenlose Software Adobe Digital Editions.
eReader: Dieses eBook kann mit (fast) allen eBook-Readern gelesen werden. Mit dem amazon-Kindle ist es aber nicht kompatibel.
Smartphone/Tablet: Egal ob Apple oder Android, dieses eBook können Sie lesen. Sie benötigen dafür eine kostenlose App.
Geräteliste und zusätzliche Hinweise

Buying eBooks from abroad
For tax law reasons we can sell eBooks just within Germany and Switzerland. Regrettably we cannot fulfill eBook-orders from other countries.

Mehr entdecken
aus dem Bereich
Das Praxisbuch für Administratoren und DevOps-Teams

von Axel Miesen

eBook Download (2022)
Rheinwerk Computing (Verlag)
39,90