Geek School: Erfahren Sie, wie Sie Windows mit PowerShell automatisieren



In dieser Ausgabe von Geek School helfen wir Ihnen, die leistungsstarke PowerShell-Skriptsprache zu verstehen, die direkt in Windows integriert ist und in einer IT-Umgebung äußerst nützlich ist.

Obwohl diese Reihe nicht um eine Prüfung herum strukturiert ist, ist das Erlernen von PowerShell eines der wichtigsten Dinge, die Sie als Netzwerkadministrator tun können. Wenn Sie also etwas lernen möchten, um Ihre IT-Karriere zu unterstützen, dann ist es das. Außerdem macht es viel Spaß.





Einführung

PowerShell ist das leistungsstärkste Automatisierungstool, das Microsoft zu bieten hat Hülse und ein Skriptsprache .

Bitte beachten Sie, dass diese Serie auf PowerShell 3 basiert, das mit Windows 8 und Server 2012 geliefert wird. Wenn Sie Windows 7 verwenden, laden Sie bitte das PowerShell 3-Update herunter, bevor Sie fortfahren.



Lernen Sie die Konsole und die ISE kennen

Es gibt zwei Möglichkeiten, mit PowerShell out of the box zu interagieren, die Konsole und die Integrated Scripting Environment – ​​auch bekannt als ISE. Die ISE hat sich gegenüber der scheußlichen Version, die mit PowerShell 2 geliefert wurde, erheblich verbessert und kann geöffnet werden, indem die Tastenkombination Win + R gedrückt wird, um ein Ausführungsfeld aufzurufen, dann powershell_ise eingibt und die Eingabetaste drückt.

Anzeige

Wie Sie sehen, verfügt die ISE über eine geteilte Ansicht, sodass Sie schnell Skripte erstellen können, während Sie das Ergebnis in der unteren Hälfte der ISE sehen können. Die untere Hälfte der ISE, in der die Ergebnisse Ihres Skripts gedruckt werden, kann auch als REPL-Eingabeaufforderung verwendet werden – ähnlich wie die Eingabeaufforderung. Die v3 ISE fügte endlich Unterstützung für Intellisense sowohl im Skriptbereich als auch in der interaktiven Konsole hinzu.



Alternativ können Sie mit PowerShell über die PowerShell-Konsole interagieren, die ich für die meisten dieser Serien verwenden werde. Die PowerShell-Konsole verhält sich ähnlich wie die Eingabeaufforderung – Sie geben einfach Befehle ein und sie spuckt die Ergebnisse aus. Um die Windows PowerShell-Konsole zu öffnen, drücken Sie erneut die Tastenkombination Win + R, um ein Ausführungsfeld zu öffnen, und geben Sie powershell ein und drücken Sie dann die Eingabetaste.

REPL-Eingabeaufforderungen wie diese sind großartig für sofortige Befriedigung: Sie geben einen Befehl ein und Sie erhalten Ergebnisse. Die Konsole bietet zwar kein Intellisense, bietet jedoch eine sogenannte Tab-Vervollständigung, die ähnlich funktioniert – beginnen Sie einfach mit der Eingabe eines Befehls und drücken Sie die Tabulatortaste, um durch mögliche Übereinstimmungen zu blättern.

Verwenden des Hilfesystems

In früheren Versionen von PowerShell waren bei der Installation von Windows Hilfedateien enthalten. Dies war größtenteils eine gute Lösung, hinterließ uns jedoch ein erhebliches Problem. Als das PowerShell-Hilfeteam die Arbeit an den Hilfedateien einstellen musste, waren die PowerShell-Entwickler noch damit beschäftigt, zu programmieren und Änderungen vorzunehmen. Dies bedeutete, dass die Hilfedateien bei der Auslieferung von PowerShell falsch waren, da sie nicht die neueren Änderungen am Code enthielten. Um dieses Problem zu lösen, wird PowerShell 3 ohne Hilfedateien ausgeliefert und enthält ein aktualisierbares Hilfesystem. Dies bedeutet, dass Sie die neuesten Hilfedateien herunterladen möchten, bevor Sie etwas tun. Sie können dies tun, indem Sie eine PowerShell-Konsole öffnen und Folgendes ausführen:

Update-Hilfe

Herzlichen Glückwunsch zur Ausführung Ihres ersten PowerShell-Befehls! Die Wahrheit ist, dass der Befehl Update-Help viel mehr Optionen hat, als ihn einfach nur auszuführen, und um sie zu sehen, möchten wir die Hilfe für den Befehl anzeigen. Um die Hilfe zu einem Befehl anzuzeigen, übergeben Sie einfach den Namen des Befehls, zu dem Sie Hilfe benötigen, an den Parameter Name des Befehls Get-Help, zum Beispiel:

Get-Help –Name Update-Hilfe

Sie fragen sich wahrscheinlich sowieso, wie Sie den ganzen Text interpretieren sollen, ich meine, warum gibt es zwei viele Informationen im Syntaxabschnitt und warum gibt es überall so viele Klammern? Das Wichtigste zuerst: Der Grund dafür, dass der Syntaxabschnitt zwei Informationsblöcke enthält, liegt darin, dass sie verschiedene Möglichkeiten zur Ausführung des Befehls darstellen. Diese werden technisch als Parametersätze bezeichnet und Sie können jeweils nur einen verwenden (Sie können keine Parameter aus verschiedenen Sätzen mischen). Im obigen Screenshot können Sie sehen, dass der obere Parametersatz einen SourcePath-Parameter hat, während der untere keinen hat. Der Grund dafür ist, dass Sie den obersten Parametersatz (den Quellpfad enthält) verwenden würden, wenn Sie Ihre Hilfedateien von einem anderen Computer in Ihrem Netzwerk aktualisieren, der sie bereits heruntergeladen hat, während Sie keinen Quellpfad angeben müssen, wenn Sie wollte nur die neuesten Dateien von Microsoft holen.

Anzeige

Um die zweite Frage zu beantworten, gibt es eine bestimmte Syntax, der die Hilfedateien folgen, und hier ist sie:

  • Eckige Klammern um einen Parameternamen und seinen Typ bedeuten, dass es sich um einen optionalen Parameter handelt und der Befehl ohne ihn problemlos funktioniert.
  • Eckige Klammern um den Parameternamen bedeuten, dass der Parameter ein Positionsparameter ist.
  • Das Ding rechts neben einem Parameter in den spitzen Klammern gibt an, welchen Datentyp der Parameter erwartet.

Sie sollten zwar lernen, die Syntax der Hilfedatei zu lesen, aber wenn Sie sich bei einem bestimmten Parameter nicht sicher sind, fügen Sie einfach –Full an das Ende Ihres Befehls get help an und scrollen Sie nach unten zum Abschnitt Parameter, wo Sie etwas mehr über jeden erfahren Parameter.

Get-Help –Name Update-Help –Full

Das letzte, was Sie über das Hilfesystem wissen müssen, ist, wie Sie damit Befehle finden können, was eigentlich sehr einfach ist. Wie Sie sehen, akzeptiert die PowerShell Platzhalter fast überall. Wenn Sie sie also zusammen mit dem Befehl Get-Help verwenden, können Sie Befehle leicht erkennen. Zum Beispiel suche ich nach Befehlen, die sich mit Windows-Diensten befassen:

Get-Help –Name *Dienst*

Sicher, all diese Informationen sind vielleicht nicht gerade praktisch, aber vertrauen Sie mir, nehmen Sie sich die Zeit und lernen Sie, das Hilfesystem zu verwenden. Es ist immer praktisch, selbst für fortgeschrittene Skripter, die dies seit Jahren tun.

Sicherheit

Dies wäre keine richtige Einführung, ohne die Sicherheit zu erwähnen. Die größte Sorge des PowerShell-Teams besteht darin, dass PowerShell zum neuesten und besten Angriffspunkt für Script-Kiddies wird. Sie haben einige Sicherheitsvorkehrungen getroffen, um sicherzustellen, dass dies nicht passiert, also werfen wir einen Blick auf sie.

Die grundlegendste Form des Schutzes ergibt sich aus der Tatsache, dass die PS1-Dateierweiterung (die Erweiterung zur Bezeichnung eines PowerShell-Skripts) nicht bei einem PowerShell-Host registriert ist, sondern tatsächlich bei Notepad. Das heißt, wenn Sie auf eine Datei doppelklicken, wird sie mit Notepad geöffnet, anstatt sie auszuführen.

Anzeige

Zweitens können Sie keine Skripte aus der Shell ausführen, indem Sie einfach den Namen des Skripts eingeben, Sie müssen den vollständigen Pfad zum Skript angeben. Wenn Sie also ein Skript auf Ihrem Laufwerk C ausführen möchten, müssen Sie Folgendes eingeben:

C: runme.ps1

Wenn Sie sich bereits im Stammverzeichnis von Laufwerk C befinden, können Sie Folgendes verwenden:

. runme.ps1

Schließlich verfügt PowerShell über sogenannte Ausführungsrichtlinien, die Sie davon abhalten, einfach ein altes Skript auszuführen. Tatsächlich können Sie standardmäßig keine Skripte ausführen und müssen Ihre Ausführungsrichtlinie ändern, wenn Sie sie ausführen möchten. Es gibt 4 bemerkenswerte Ausführungsrichtlinien:

    Eingeschränkt: Dies ist die Standardkonfiguration in PowerShell. Diese Einstellung bedeutet, dass kein Skript unabhängig von seiner Signatur ausgeführt werden kann. Das einzige, was mit dieser Einstellung in PowerShell ausgeführt werden kann, ist ein einzelner Befehl. AlleUnterzeichnet:Diese Einstellung ermöglicht die Ausführung von Skripts in PowerShell. Das Skript muss über eine zugeordnete digitale Signatur von einem vertrauenswürdigen Herausgeber verfügen. Bevor Sie die Skripts von vertrauenswürdigen Herausgebern ausführen, wird eine Eingabeaufforderung angezeigt. RemoteSigned: Diese Einstellung ermöglicht die Ausführung von Skripts, erfordert jedoch, dass die Skript- und Konfigurationsdateien, die aus dem Internet heruntergeladen werden, über eine zugeordnete digitale Signatur von einem vertrauenswürdigen Herausgeber verfügen. Skripte, die vom lokalen Computer ausgeführt werden, müssen nicht signiert werden. Es gibt keine Eingabeaufforderungen, bevor das Skript ausgeführt wird. Uneingeschränkt: Dadurch können nicht signierte Skripte ausgeführt werden, einschließlich aller Skripts und Konfigurationsdateien, die aus dem Internet heruntergeladen wurden. Dies schließt Dateien aus Outlook und Messenger ein. Das Risiko besteht hier darin, Skripte ohne Signatur oder Sicherheit auszuführen. Wir empfehlen, diese Einstellung niemals zu verwenden.

Um zu sehen, wie Ihre aktuelle Ausführungsrichtlinie festgelegt ist, öffnen Sie eine PowerShell-Konsole und geben Sie Folgendes ein:

Get-ExecutionPolicy

Für diesen Kurs und die meisten anderen Umstände ist die RemoteSigned-Richtlinie die beste, also fahren Sie fort und ändern Sie Ihre Richtlinie wie folgt.

Hinweis: Dies muss über eine PowerShell-Konsole mit erhöhten Rechten erfolgen.

Set-ExecutionPolicy RemoteSigned

Anzeige

Das ist alles für diese Zeit, Leute, wir sehen uns morgen für mehr PowerShell-Spaß.


Haftungsausschluss: Der richtige Begriff für einen PowerShell-Befehl ist ein Cmdlet, und von nun an verwenden wir diese korrekte Terminologie. Es fühlte sich einfach angemessener an, sie für diese Einführung Befehle zu nennen.


Bei Fragen könnt ihr mir gerne twittern @taybgibb , oder hinterlasse einfach einen Kommentar.

WEITER LESEN Profilfoto von Taylor Gibb Taylor Gibb
Taylor Gibb ist ein professioneller Softwareentwickler mit fast einem Jahrzehnt Erfahrung. Er war zwei Jahre lang als Microsoft Regional Director in Südafrika tätig und hat mehrere Microsoft MVP (Most Valued Professional) Auszeichnungen erhalten. Derzeit arbeitet er im Bereich Forschung und Entwicklung bei Derivatco International.
Vollständige Biografie lesen

Interessante Artikel