Was ist Windows PowerShell und womit wird es gegessen? Teil 1: Hauptmerkmale

Historisch gesehen sind Befehlszeilen-Dienstprogramme auf Unix-Systemen besser entwickelt als auf Windows, aber mit der Einführung einer neuen Lösung hat sich die Situation geändert.

Mit Windows PowerShell können Systemadministratoren die meisten Routineaufgaben automatisieren. Damit können Sie Einstellungen ändern, Dienste stoppen und starten und auch Wartungsarbeiten an den meisten installierten Anwendungen durchführen. Es wäre falsch, das blaue Fenster als einen weiteren Befehlsinterpreter wahrzunehmen. Dieser Ansatz spiegelt nicht den Kern der von Microsoft vorgeschlagenen Innovationen wider. Tatsächlich sind die Möglichkeiten von Windows PowerShell viel umfassender: In einer kurzen Artikelserie werden wir versuchen herauszufinden, wie sich die Microsoft-Lösung von den uns bekannteren Tools unterscheidet.

Was ist Windows PowerShell und womit wird es gegessen? Teil 1: Hauptmerkmale

Основные возможности 

Natürlich ist Windows PowerShell in erster Linie eine Skript-Shell, die ursprünglich auf .NET Framework und später auf .NET Core aufbaute. Im Gegensatz zu Shells, die Textdaten akzeptieren und zurückgeben, arbeitet Windows PowerShell mit .NET-Klassen, die über Eigenschaften und Methoden verfügen. Mit PowerShell können Sie allgemeine Befehle ausführen und auf COM-, WMI- und ADSI-Objekte zugreifen. Es nutzt für den Zugriff verschiedene Speicher, etwa das Dateisystem oder die Windows-Registrierung, sogenannte. Anbieter. Erwähnenswert ist die Möglichkeit, ausführbare PowerShell-Komponenten in andere Anwendungen einzubetten, um verschiedene Vorgänge zu implementieren, einschließlich. über eine grafische Oberfläche. Auch das Gegenteil ist der Fall: Viele Windows-Anwendungen bieten über PowerShell Zugriff auf ihre Verwaltungsschnittstellen. 

Mit Windows PowerShell können Sie:

  • Betriebssystemeinstellungen ändern;
  • Dienste und Prozesse verwalten;
  • Serverrollen und -komponenten konfigurieren;
  • Software installieren;
  • Verwalten Sie installierte Software über spezielle Schnittstellen.
  • Einbetten ausführbarer Komponenten in Programme von Drittanbietern;
  • Erstellen Sie Skripte, um Verwaltungsaufgaben zu automatisieren.
  • Arbeiten Sie mit dem Dateisystem, der Windows-Registrierung, dem Zertifikatspeicher usw.

Shell und Entwicklungsumgebung

Windows PowerShell gibt es in zwei Formen: Neben dem Konsolenemulator mit Befehlsshell gibt es ein Integrated Scripting Environment (ISE). Um auf die Befehlszeilenschnittstelle zuzugreifen, wählen Sie einfach die entsprechende Verknüpfung aus dem Windows-Menü aus oder führen Sie powershell.exe aus dem Menü „Ausführen“ aus. Auf dem Bildschirm erscheint ein blaues Fenster, das sich in seinen Fähigkeiten deutlich von der vorsintflutlichen cmd.exe unterscheidet. Es gibt Autovervollständigung und andere Funktionen, die Benutzern von Befehlsshells für Unix-Systeme bekannt sind.

Was ist Windows PowerShell und womit wird es gegessen? Teil 1: Hauptmerkmale

Um mit der Shell arbeiten zu können, müssen Sie sich einige Tastenkombinationen merken:

  • Mit den Aufwärts- und Abwärtspfeilen scrollen Sie durch den Verlauf, um zuvor eingegebene Befehle zu wiederholen.
  • Der rechte Pfeil am Ende einer Zeile gibt den vorherigen Befehl Zeichen für Zeichen erneut ein;
  • Strg+PosXNUMX löscht den eingegebenen Text von der Cursorposition bis zum Zeilenanfang;
  • Strg+Ende löscht Text vom Cursor bis zum Ende der Zeile.

F7 zeigt ein Fenster mit eingegebenen Befehlen an und ermöglicht die Auswahl eines davon. Die Konsole funktioniert auch mit Textauswahl mit der Maus, Kopieren-Einfügen, Cursorpositionierung, Löschen, Rücktaste – alles, was uns gefällt.

Was ist Windows PowerShell und womit wird es gegessen? Teil 1: Hauptmerkmale
Windows PowerShell ISE ist eine vollständige Entwicklungsumgebung mit einem Code-Editor mit Registerkarten und Syntaxhervorhebung, Befehlsgenerator, integriertem Debugger und anderen Programmierfreuden. Wenn Sie im Entwicklungsumgebungseditor hinter den Befehlsnamen einen Bindestrich schreiben, erhalten Sie in der Dropdown-Liste alle verfügbaren Optionen mit Angabe des Typs. Sie können PowerShell ISE entweder über eine Verknüpfung im Systemmenü oder über die ausführbare Datei powershell_ise.exe starten.

Was ist Windows PowerShell und womit wird es gegessen? Teil 1: Hauptmerkmale

Cmdlets 

In Windows PowerShell ist die sogenannte. Cmdlets. Hierbei handelt es sich um spezialisierte .NET-Klassen, die eine Vielzahl von Funktionen bereitstellen. Sie heißen Action-Object (oder Verb-Noun, wenn Sie es vorziehen) und der durch Bindestrich getrennte Link ähnelt dem Prädikat und dem Subjekt in Sätzen in natürlicher Sprache. Get-Help bedeutet beispielsweise wörtlich „Get-Help“ oder in einem PowerShell-Kontext: „Show-Help“. Tatsächlich handelt es sich dabei um ein Analogon zum man-Befehl in Unix-Systemen, und Handbücher in PowerShell müssen auf diese Weise angefordert werden und nicht durch Aufrufen von Cmdlets mit der Taste --help oder /?. Vergessen Sie nicht die Online-PowerShell-Dokumentation: Microsoft hat es ziemlich detailliert.

Zusätzlich zu „Get“ verwenden Cmdlets andere Verben, um Aktionen zu kennzeichnen (und streng genommen nicht nur Verben). In der folgenden Liste geben wir einige Beispiele:

Add - hinzufügen;
Clear - klar;
Enable - anmachen;
Disable - ausschalten;
New - erstellen;
Remove - löschen;
Set - fragen;
Start - laufen;
Stop - stoppen;
Export - Export;
Import - importieren.

Es gibt System-, Benutzer- und optionale Cmdlets: Als Ergebnis der Ausführung geben sie alle ein Objekt oder ein Array von Objekten zurück. Sie unterscheiden nicht zwischen Groß- und Kleinschreibung, d. h. Aus Sicht des Befehlsinterpreters gibt es keinen Unterschied zwischen Get-Help und get-help. Das Zeichen „;“ wird zur Trennung verwendet, es ist jedoch nur dann obligatorisch, wenn mehrere Cmdlets in derselben Zeile ausgeführt werden. 

Windows PowerShell-Cmdlets sind in Modulen gruppiert (NetTCPIP, Hyper-V usw.), und es gibt ein Get-Command-Cmdlet für die Suche nach Objekt und Aktion. Hilfe dazu können Sie sich wie folgt anzeigen lassen:

Get-Help Get-Command

Was ist Windows PowerShell und womit wird es gegessen? Teil 1: Hauptmerkmale

Standardmäßig zeigt der Befehl eine kurze Hilfe an, Parameter (Argumente) werden jedoch nach Bedarf an Cmdlets übergeben. Mit ihrer Hilfe können Sie beispielsweise detaillierte (Parameter -Detailed) oder vollständige (Parameter -Full) Hilfe erhalten sowie Beispiele anzeigen (Parameter -Examples):

Get-Help Get-Command -Examples

Die Hilfe in Windows PowerShell wird durch das Cmdlet Update-Help aktualisiert. Wenn sich herausstellt, dass die Befehlszeile zu lang ist, können die Cmdlet-Argumente in die nächste verschoben werden, indem Sie das Dienstzeichen „`“ schreiben und die Eingabetaste drücken. Es wird nicht funktionieren, den Befehl einfach in einer Zeile fertig zu schreiben und in einer anderen fortzufahren.

Hier sind einige Beispiele für gängige Cmdlets: 

Get-Process - laufende Prozesse im System anzeigen;
Get-Service — Dienste und deren Status anzeigen;
Get-Content - Zeigt den Inhalt der Datei an.

Für häufig verwendete Cmdlets und externe Dienstprogramme verfügt Windows PowerShell über kurze Synonyme – Aliase (aus dem Englischen. Alias). Dir ist beispielsweise ein Alias ​​für Get-ChildItem. Die Liste der Synonyme umfasst auch Analoga von Befehlen aus Unix-Systemen (ls, ps usw.), und das Cmdlet Get-Help wird vom Befehl help aufgerufen. Eine vollständige Liste der Synonyme kann mit dem Cmdlet Get-Alias ​​​​angezeigt werden:

Was ist Windows PowerShell und womit wird es gegessen? Teil 1: Hauptmerkmale

Skripte, Funktionen, Module und die PowerShell-Sprache

Windows PowerShell-Skripte werden als reine Textdateien mit der Erweiterung .ps1 gespeichert. Sie können sie nicht durch Doppelklick starten: Sie müssen mit der rechten Maustaste klicken, um das Kontextmenü aufzurufen, und den Eintrag „In PowerShell ausführen“ auswählen. Von der Konsole aus müssen Sie entweder den vollständigen Pfad zum Skript angeben oder in das entsprechende Verzeichnis gehen und den Dateinamen eingeben. Das Ausführen von Skripts ist auch durch Systemrichtlinien eingeschränkt. Um die aktuellen Einstellungen zu überprüfen, können Sie das Cmdlet Get-ExecutionPolicy verwenden, das einen der folgenden Werte zurückgibt:

Restricted — Das Starten von Skripten ist deaktiviert (standardmäßig);
AllSigned - Es ist nur der Start von Skripten erlaubt, die von einem vertrauenswürdigen Entwickler signiert wurden.
RemoteSigned - darf signierte und eigene Skripte ausführen;
Unrestricted - darf beliebige Skripte ausführen.

Der Administrator hat zwei Möglichkeiten. Am sichersten ist es, Skripte zu signieren, aber das ist eine ziemlich ernste Zauberei – wir werden uns in zukünftigen Artikeln damit befassen. Gehen wir nun den Weg des geringsten Widerstands und ändern wir die Politik:

Set-ExecutionPolicy RemoteSigned

Was ist Windows PowerShell und womit wird es gegessen? Teil 1: Hauptmerkmale
Dazu muss PowerShell als Administrator ausgeführt werden. Sie können die Richtlinie für den aktuellen Benutzer jedoch mit einer speziellen Einstellung ändern.

Skripte werden in einer objektorientierten Programmiersprache geschrieben, deren Befehle nach dem gleichen Prinzip benannt werden wie die zuvor besprochenen Cmdlets: „Action-Object“ („Verb-Noun“). Ihr Hauptzweck besteht darin, Verwaltungsaufgaben zu automatisieren, es handelt sich jedoch um eine vollwertige interpretierte Sprache, die über alle erforderlichen Konstrukte verfügt: bedingter Sprung, Schleifen, Variablen, Arrays, Objekte, Fehlerbehandlung usw. Für die Skripterstellung eignet sich jeder Texteditor, am besten ist jedoch die Ausführung von Windows PowerShell ISE.

Sie können Parameter an das Skript übergeben, sie als erforderlich festlegen und Standardwerte festlegen. Darüber hinaus können Sie mit Windows PowerShell Funktionen auf die gleiche Weise wie Cmdlets erstellen und aufrufen, indem Sie das Funktionskonstrukt und geschweifte Klammern verwenden. Ein Skript mit Funktionen wird als Modul bezeichnet und hat die Erweiterung .psm1. Module müssen in Verzeichnissen gespeichert werden, die in den PowerShell-Umgebungsvariablen definiert sind. Sie können sie mit dem folgenden Befehl anzeigen:

Get-ChildItem Env:PSModulePath | Format-Table -AutoSize

Förderer

Im letzten Beispiel haben wir ein Konstrukt verwendet, das Unix-Shell-Benutzern bekannt ist. In Windows PowerShell können Sie mit der vertikalen Leiste auch die Ausgabe eines Befehls an die Eingabe eines anderen Befehls übergeben. Es gibt jedoch einen wesentlichen Unterschied in der Implementierung der Pipeline: Wir sprechen nicht mehr über eine Reihe von Zeichen oder etwas Ähnliches Text. Integrierte Cmdlets oder benutzerdefinierte Funktionen geben Objekte oder Arrays von Objekten zurück und können diese auch als Eingabe empfangen. Wie die Bourne-Shell und ihre vielen Nachfolger erleichtert PowerShell komplexe Aufgaben mit einer Pipeline.

Das einfachste Pipeline-Beispiel sieht so aus:

Get-Service | Sort-Object -property Status

Was ist Windows PowerShell und womit wird es gegessen? Teil 1: Hauptmerkmale
Zuerst wird das Cmdlet „Get-Service“ ausgeführt, und dann werden alle von ihm empfangenen Dienste an das Cmdlet „Sort-Object“ übergeben, um sie nach der Eigenschaft „Status“ zu sortieren. An welches Argument das Ergebnis des vorherigen Abschnitts der Pipeline übergeben wird, hängt von seinem Typ ab – normalerweise ist es InputObject. Dieses Problem wird in einem Artikel über die Programmiersprache PowerShell ausführlicher behandelt. 

Wenn Sie möchten, können Sie die Kette fortsetzen und das Ergebnis der Sort-Object-Operation an ein anderes Cmdlet übergeben (dieses wird von links nach rechts ausgeführt). Übrigens steht auch Windows-Nutzern die von allen Unixoiden bekannte Konstruktion für die Paginierung zur Verfügung: 

Get-Service | Sort-Object -property Status | more

Ausführen von Aufgaben im Hintergrund 

Sehr oft ist es notwendig, einen bestimmten Befehl im Hintergrund auszuführen, um nicht auf das Ergebnis seiner Ausführung in der Shell-Sitzung warten zu müssen. Windows PowerShell verfügt für diesen Fall über mehrere Cmdlets:

Start-Job - Starten einer Hintergrundaufgabe;
Stop-Job — Stoppen Sie die Hintergrundaufgabe;
Get-Job — Liste der Hintergrundaufgaben anzeigen;
Receive-Job — Anzeigen des Ergebnisses der Ausführung der Hintergrundaufgabe;
Remove-Job — Löschen einer Hintergrundaufgabe;
Wait-Job - Übertragen der Hintergrundaufgabe zurück auf die Konsole.

Um eine Hintergrundaufgabe zu starten, verwenden wir das Cmdlet „Start-Job“ und geben einen Befehl oder eine Reihe von Befehlen in geschweiften Klammern an:

Start-Job {Get-Service}

Was ist Windows PowerShell und womit wird es gegessen? Teil 1: Hauptmerkmale
Hintergrundaufgaben in Windows PowerShell können manipuliert werden, indem man ihre Namen kennt. Lassen Sie uns zunächst lernen, wie man sie anzeigt:

Get-Job

Was ist Windows PowerShell und womit wird es gegessen? Teil 1: Hauptmerkmale
Nun zeigen wir das Ergebnis des Jobs Job1:

Receive-Job Job1 | more

Was ist Windows PowerShell und womit wird es gegessen? Teil 1: Hauptmerkmale
Alles ist ziemlich einfach.

Remote-Befehlsausführung

Mit Windows PowerShell können Sie Befehle und Skripte nicht nur auf dem lokalen Computer, sondern auch auf einem Remotecomputer und sogar auf einer ganzen Gruppe von Computern ausführen. Dafür gibt es mehrere Möglichkeiten:

  • Viele Cmdlets verfügen über einen Parameter -ComputerName, aber auf diese Weise lässt sich beispielsweise kein Förderband erstellen;
  • Cmdlet Enter-PSSession ermöglicht Ihnen, eine interaktive Sitzung auf einem Remote-Computer zu erstellen; 
  • Verwenden des Cmdlets Invoke-Command Sie können Befehle oder Skripte auf einem oder mehreren Remotecomputern ausführen.

Versionen von PowerShell

PowerShell hat sich seit seiner ersten Veröffentlichung im Jahr 2006 stark verändert. Das Tool ist für viele Systeme verfügbar, die auf unterschiedlichen Hardwareplattformen (x86, x86-64, Itanium, ARM) laufen: Windows XP, Windows Server 2003, Windows Vista, Windows Server 2008/2008 R2, Windows 7, Windows 8, Windows 8.1, Windows RT, Windows RT 8.1, Windows Server 2012/2012 R2, Windows 10, Windows Server 2016, GNU/Linux und OS X. Neueste Version 6.2 veröffentlicht am 10. Januar 2018. Skripte, die für frühere Versionen geschrieben wurden, funktionieren wahrscheinlich auch in späteren Versionen, aber die Rückportierung kann problematisch sein, da PowerShell im Laufe der Jahre der Entwicklung eine große Anzahl neuer Cmdlets eingeführt hat. Sie können die Version der auf dem Computer installierten Befehlsshell mithilfe der PSVersion-Eigenschaft der integrierten Variablen $PSVersionTable ermitteln:

$PSVersionTable.PSVersion

Was ist Windows PowerShell und womit wird es gegessen? Teil 1: Hauptmerkmale
Sie können auch das Cmdlet verwenden:

Get-Variable -Name PSVersionTable –ValueOnly

Was ist Windows PowerShell und womit wird es gegessen? Teil 1: Hauptmerkmale
Dasselbe geschieht mit dem Cmdlet Get-Host. Tatsächlich gibt es viele Möglichkeiten, aber um sie nutzen zu können, müssen Sie die Programmiersprache PowerShell erlernen, was wir in tun werden nächster Artikel

Ergebnisse 

Microsoft ist es gelungen, eine wirklich leistungsstarke Shell mit einer praktischen integrierten Umgebung zum Entwickeln von Skripten zu erstellen. Es unterscheidet sich von den uns aus der Unix-Welt bekannten Tools durch die tiefe Integration mit Betriebssystemen der Windows-Familie sowie mit Software für diese und der .NET Core-Plattform. PowerShell kann als objektorientierte Shell bezeichnet werden, da Cmdlets und benutzerdefinierte Funktionen Objekte oder Arrays von Objekten zurückgeben und diese als Eingabe verwenden können. Wir sind der Meinung, dass alle Serveradministratoren unter Windows dieses Tool besitzen sollten: Die Zeit ist vorbei, in der sie auf die Befehlszeile verzichten konnten. Insbesondere wird eine erweiterte Konsolen-Shell benötigt unser kostengünstiger VPS mit Windows Server Core, aber das ist eine ganz andere Geschichte.

Was ist Windows PowerShell und womit wird es gegessen? Teil 1: Hauptmerkmale

An der Umfrage können nur registrierte Benutzer teilnehmen. Einloggenbitte.

Welche Themen sollten in den nächsten Artikeln der Serie zuerst behandelt werden?

  • 53,2%Programmierung in PowerShell123

  • 42,4%PowerShell98-Funktionen und -Module

  • 22,1%Wie signiere ich meine eigenen Skripte?51

  • 12,1%Arbeiten mit Repositories über Anbieter (Anbieter)28

  • 57,6%Automatisierung der Computerverwaltung mit PowerShell133

  • 30,7%Softwareverwaltung und Einbettung ausführbarer PowerShell-Dateien in Produkte von Drittanbietern71

231 Benutzer haben abgestimmt. 37 Benutzer enthielten sich der Stimme.

Source: habr.com

Kommentar hinzufügen