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

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

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

Während diese Reihe nicht um eine strukturiert istDas Erlernen von PowerShell ist eine der wichtigsten Aufgaben, die Sie als Netzwerkadministrator ausführen können. Wenn Sie also etwas lernen möchten, um Ihre IT-Karriere voranzutreiben, ist dies genau das Richtige. Außerdem macht es viel Spaß.

Einführung

PowerShell ist das leistungsstärkste Automatisierungstool von Microsoft und sowohl eine Shell als auch eine Skriptsprache.

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

Treffen Sie die Konsole und die ISE

Es gibt zwei Möglichkeiten, mit PowerShell zu interagierenStandardmäßig sind die Konsole und die integrierte Skriptumgebung (auch als ISE bezeichnet) installiert. Die ISE wurde gegenüber der im Lieferumfang von PowerShell 2 enthaltenen Version erheblich verbessert. Sie können sie öffnen, indem Sie die Win + R-Tastenkombination drücken, eine Run-Box aufrufen, dann powershell_ise eingeben und die Eingabetaste drücken.

Bild

Wie Sie sehen können, zeigt die ISE eine geteilte Ansichtdass Sie schnell Skripten 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 ähnlich wie die Eingabeaufforderung auch als REPL-Eingabeaufforderung verwendet werden. Die Version 3 von ISE fügte schließlich die Unterstützung für Intellisense sowohl im Skriptbereich als auch in der interaktiven Konsole hinzu.

Bild

Bild

Alternativ können Sie mit PowerShell interagierenVerwenden der PowerShell-Konsole, die ich für den größten Teil dieser Serie verwenden werde. Die PowerShell-Konsole verhält sich ähnlich wie die Eingabeaufforderung - Sie geben einfach Befehle ein und sie gibt die Ergebnisse aus. Drücken Sie zum Öffnen der Windows PowerShell-Konsole erneut die Win + R-Tastenkombination, um ein Ausführungsfeld zu öffnen, und geben Sie Powershell ein. Drücken Sie anschließend die Eingabetaste.

Bild

REPL-Eingabeaufforderungen wie diese sind für den Augenblick fantastischBefriedigung: Sie geben einen Befehl ein und erhalten Ergebnisse. Die Konsole bietet zwar keine Intellisense-Funktion, bietet jedoch eine Tabulatorvervollständigung, die in etwa gleich funktioniert. Beginnen Sie einfach mit der Eingabe eines Befehls und drücken Sie die Tabulatortaste, um durch die möglichen Übereinstimmungen zu blättern.

Bild

Bild

Hilfesystem verwenden

In früheren Versionen von PowerShell gab es Hilfedateienenthalten, wenn Sie Windows installiert haben. Dies war größtenteils eine gute Lösung, ließ uns jedoch ein erhebliches Problem zurück. Als das PowerShell-Hilfeteam aufhören musste, an den Hilfedateien zu arbeiten, waren die PowerShell-Entwickler immer noch damit beschäftigt, Änderungen vorzunehmen und zu programmieren. Dies bedeutete, dass beim Versand von PowerShell die Hilfedateien falsch waren, da sie nicht die neueren Änderungen enthielten, die am Code vorgenommen wurden. Um dieses Problem zu beheben, wird PowerShell 3 ohne Hilfedateien ausgeliefert und enthält ein aktualisierbares Hilfesystem. Das bedeutet, bevor Sie etwas tun, möchten Sie die neuesten Hilfedateien herunterladen. Sie können dies tun, indem Sie eine PowerShell-Konsole öffnen und Folgendes ausführen:

Update-Hilfe

Bild

Bild

Herzlichen Glückwunsch zum Ausführen Ihrer ersten PowerShellBefehl! Die Wahrheit ist, dass der Befehl Update-Help viel mehr Optionen bietet als nur das Ausführen. Um diese anzuzeigen, möchten wir die Hilfe für den Befehl anzeigen. Um die Hilfe für einen Befehl anzuzeigen, übergeben Sie einfach den Namen des Befehls, für den Sie Hilfe benötigen, an den Parameter Name des Befehls Get-Help. Beispiel:

Get-Help - Name Update-Hilfe

Bild

Sie fragen sich wahrscheinlich, wie Sie alles interpretieren sollenTrotzdem, ich meine, warum gibt es im Syntaxabschnitt zwei viele Informationen und warum gibt es überall so viele Klammern? Das Wichtigste zuerst: Der Grund dafür, dass der Syntaxabschnitt zwei Informationsblöcke enthält, besteht darin, dass sie unterschiedliche Arten der Befehlsausführung darstellen. Dies sind technisch so genannte Parametersätze, und Sie können jeweils nur einen verwenden (Sie können keine Parameter aus verschiedenen Sätzen mischen). Im obigen Screenshot sehen Sie, dass der obere Parametersatz einen SourcePath-Parameter hat, der untere keinen. Der Grund dafür ist, dass Sie den obersten Parametersatz (denjenigen, der SourcePath enthält) verwenden würden, wenn Sie Ihre Hilfedateien von einem anderen Computer in Ihrem Netzwerk aktualisieren würden, der sie bereits heruntergeladen hat, während Sie keinen Quellpfad angeben müssten, wenn Sie dies möchten wollte nur die neuesten Dateien von Microsoft holen.

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

  • Eckige Klammern um einen Parameternamen und sein 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 Symbol rechts neben einem Parameter in den spitzen Klammern gibt an, welchen Datentyp der Parameter erwartet.

Während Sie lernen sollten, die Hilfedatei zu lesenSyntax: Wenn Sie sich bei einem bestimmten Parameter nicht sicher sind, fügen Sie einfach –Voll an das Ende Ihres Befehls get help an und scrollen Sie zum Abschnitt parameters, in dem Sie ein wenig mehr über die einzelnen Parameter erfahren.

Get-Help –Name Update-Help –Full

Bild

Das Letzte, was Sie über die Hilfe wissen müssenSystem ist, wie Sie es verwenden können, um Befehle zu entdecken, was eigentlich sehr einfach ist. Wie Sie sehen, akzeptiert die PowerShell fast überall Platzhalter. Wenn Sie diese zusammen mit dem Befehl Get-Help verwenden, können Sie Befehle auf einfache Weise erkennen. Ich suche beispielsweise nach Befehlen, die sich mit Windows-Diensten befassen:

Get-Help - Name * Service *

Bild

Sicher, all diese Informationen sind möglicherweise nicht praktischvon der Fledermaus, aber vertrau mir, nimm dir Zeit und lerne, wie man das Hilfesystem benutzt. Es ist immer praktisch, auch für fortgeschrittene Skripter, die dies seit Jahren tun.

Sicherheit

Dies wäre keine richtige Einführung ohneErwähnung der Sicherheit. Die größte Sorge für das PowerShell-Team ist, dass PowerShell zum neuesten und größten Angriffspunkt für Skriptkinder wird. Sie haben einige Sicherheitsmaßnahmen getroffen, um sicherzustellen, dass dies nicht geschieht. Schauen wir uns diese also an.

Die grundlegendste Form des Schutzes kommt von derTatsache, dass die PS1-Dateierweiterung (die Erweiterung, die zur Bezeichnung eines PowerShell-Skripts verwendet wird) nicht bei einem PowerShell-Host registriert ist, sondern tatsächlich bei Notepad. Das heißt, wenn Sie auf eine Datei doppelklicken, wird diese nicht ausgeführt, sondern mit dem Editor geöffnet.

Zweitens können Sie keine Skripte über die Shell ausführenGeben Sie einfach den Namen des Skripts ein und geben Sie den vollständigen Pfad zum Skript an. Wenn Sie also ein Skript auf Ihrem C-Laufwerk ausführen möchten, müssen Sie Folgendes eingeben:

C: runme.ps1

Wenn Sie sich bereits im Stammverzeichnis des Laufwerks C befinden, können Sie Folgendes verwenden:

.runme.ps1

Schließlich hat PowerShell etwas namensAusführungsrichtlinien, die Sie davon abhalten, nur ein altes Skript auszuführen. Tatsächlich können Sie standardmäßig keine Skripts ausführen und müssen Ihre Ausführungsrichtlinie ändern, wenn Sie diese ausführen dürfen möchten. Es gibt 4 bemerkenswerte Ausführungsrichtlinien:

  • Beschränkt: Dies ist die Standardkonfiguration in PowerShell. Diese Einstellung bedeutet, dass kein Skript ausgeführt werden kann, unabhängig von seiner Signatur. Mit dieser Einstellung kann in PowerShell nur ein einzelner Befehl ausgeführt werden.
  • AllSigned: Diese Einstellung ermöglicht das Ausführen von SkriptenPower Shell. Dem Skript muss eine digitale Signatur eines vertrauenswürdigen Herausgebers zugeordnet sein. Es wird eine Eingabeaufforderung angezeigt, bevor Sie die Skripts von vertrauenswürdigen Herausgebern ausführen.
  • RemoteSigned: Mit dieser Einstellung können Skripte ausgeführt werden, abererfordert, dass das Skript und die Konfigurationsdateien, die aus dem Internet heruntergeladen werden, von einem vertrauenswürdigen Herausgeber digital signiert sind. Skripte, die vom lokalen Computer ausgeführt werden, müssen nicht signiert werden. Vor dem Ausführen des Skripts sind keine Eingabeaufforderungen vorhanden.
  • Uneingeschränkt: Dies ermöglicht die Ausführung von nicht signierten Skripten, einschließlichAlle Skripte und Konfigurationsdateien, die aus dem Internet heruntergeladen wurden. Dies schließt Dateien aus Outlook und Messenger ein. Hier besteht das Risiko, dass Skripte ohne Signatur oder Sicherheit ausgeführt werden. Wir haben wieder aufgenommen, dass Sie uns diese Einstellung nie geben.

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

Get-ExecutionPolicy

Bild

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

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

Set-ExecutionPolicy RemoteSigned

Bild

Das ist alles für dieses Mal Leute, wir sehen uns morgen für etwas mehr PowerShell-Spaß.


Haftungsausschluss: Der korrekte Begriff für einen PowerShell-Befehl ist ein Cmdlet. Ab sofort verwenden wir diese korrekte Terminologie. Für diese Einführung schien es angemessener, sie Befehle zu nennen.


Wenn Sie irgendwelche Fragen haben, können Sie mir @ taybgibb twittern oder einfach einen Kommentar hinterlassen.