15Jul

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

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

Während diese Serie nicht nach einer Prüfung strukturiert ist, ist das Lernen von PowerShell eines der wichtigsten Dinge, die Sie als Netzwerkadministrator tun können. Wenn Sie also etwas lernen möchten, um Ihrer IT-Karriere zu helfen, dann ist es das. Außerdem macht es viel Spaß.

Einführung

PowerShell ist das leistungsstärkste Automatisierungswerkzeug, das Microsoft zu bieten hat, und zwar sowohl eine Shell als auch eine Skriptsprache.

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

Treffen Sie die Konsole und das ISE

Es gibt zwei Arten der Interaktion mit PowerShell, die Konsole und die integrierte Scripting-Umgebung - auch bekannt als die ISE.Die ISE hat sich von der hässlichen Version, die mit PowerShell 2 geliefert wurde, erheblich verbessert und kann durch Drücken der Win + R-Tastaturkombination geöffnet werden, um eine Run-Box zu öffnen, dann powershell_ise eingeben und Enter drücken.

Wie Sie sehen können, bietet die ISE eine Split-Ansicht, so dass Sie schnell scripten können und trotzdem 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 bei der Eingabeaufforderung. Die v3 ISE hat schließlich sowohl im Skriptfenster als auch in der interaktiven Konsole Unterstützung für Intellisense hinzugefügt.

Alternativ können Sie mit PowerShell mit der 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 spucken die Ergebnisse aus. Um die Windows PowerShell-Konsole zu öffnen, drücken Sie erneut die Tastenkombination Win + R, um eine Ausführungsbox zu öffnen, geben Sie powershell ein und drücken Sie die Eingabetaste.

REPL-Aufforderungen wie diese sind super für sofortige Befriedigung: Sie geben einen Befehl ein und Sie erhalten Ergebnisse. Obwohl die Konsole kein Intellisense anbietet, bietet sie etwas, das Tab-Completion genannt wird und ähnlich funktioniert - einfach einen Befehl eingeben und die Tabulatortaste drücken, um durch die möglichen Übereinstimmungen zu blättern.

Verwenden des Hilfesystems

In früheren Versionen von PowerShell wurden Hilfedateien bei der Installation von Windows eingebunden. Dies war größtenteils eine gute Lösung, hat uns jedoch ein erhebliches Problem bereitet. Als das PowerShell-Hilfeteam nicht mehr an den Hilfedateien arbeiten konnte, waren die PowerShell-Entwickler noch mit der Programmierung und Änderungen beschäftigt. Dies bedeutet, dass die Hilfedateien beim Versand von PowerShell nicht korrekt waren, da sie nicht die neueren Änderungen enthielten, die am Code vorgenommen wurden. Zur Lösung dieses Problems enthält PowerShell 3 keine Hilfedateien und enthält ein aktualisierbares Hilfesystem. Bevor Sie also etwas tun, sollten Sie die neuesten Hilfedateien herunterladen. Sie können dies tun, indem Sie eine PowerShell-Konsole öffnen und Folgendes ausführen:

Update-Help

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

Get-Help -Name Update-Hilfe

Sie fragen sich wahrscheinlich, wie Sie interpretierenall dieser Text sowieso, ich meine, warum gibt es zwei viele Informationen unter dem Syntax-Abschnitt und warum gibt es so viele Klammern überall? Das Wichtigste zuerst: Der Grund dafür, dass zwei Informationsblöcke unter dem Syntaxabschnitt liegen, liegt darin, dass sie verschiedene Möglichkeiten zum Ausführen des Befehls darstellen. Diese werden technisch als Parametersätze bezeichnet und Sie können jeweils nur einen verwenden( Sie können Parameter nicht aus verschiedenen Sets mischen).Im obigen Screenshot sehen Sie, dass der obere Parametersatz einen SourcePath-Parameter hat, während der untere nicht. Der Grund dafür ist, dass Sie den obersten Parametersatz( den Quellpfad verwenden) verwenden, wenn Sie Ihre Hilfedateien von einem anderen Computer in Ihrem Netzwerk aktualisieren, der sie bereits heruntergeladen hat, während Sie bei Bedarf keinen Quellpfad angeben müssenwollte nur die neuesten Dateien von Microsoft greifen.

Um die zweite Frage zu beantworten, gibt es eine bestimmte Syntax, die den Dateien folgt und hier ist es:

  • Eckige Klammern um einen Parameternamen und dessen Typ bedeutet, dass es sich um einen optionalen Parameter handelt und der Befehl ohne ihn einwandfrei funktioniert.
  • Eckige Klammern um den Parameternamen bedeutet, dass die Parameter Positionsparameter sind.
  • Die Angabe rechts neben einem Parameter in den spitzen Klammern gibt Auskunft über den Datentyp, den der Parameter erwartet.

Während Sie lernen sollten, die Syntax der Hilfedatei zu lesen, sollten Sie, wenn Sie sich bei einem bestimmten Parameter nicht sicher sind, einfach an den Befehl help -Full anhängen und nach unten zum Parameter-Abschnitt scrollen, wo Sie etwas mehr darüber erfahrenjeder Parameter.

Get-Help -Name Update-Hilfe-Full

Das letzte, was Sie über das Hilfesystem wissen müssen, ist, wie Sie es verwenden können, um Befehle zu finden, was eigentlich sehr einfach ist. Sie sehen, dass die PowerShell Platzhalter fast überall akzeptiert. 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 * service *

Sicher, all diese Informationen sind vielleicht nicht handlich von der Fledermaus, aber vertraue mir, nimm dir die Zeit und lerne zu benutzendas Hilfesystem. Es ist immer praktisch, sogar für Fortgeschrittene, die das seit Jahren machen.

Security

Dies wäre keine korrekte Einführung ohne die Sicherheit zu erwähnen. Die größte Sorge für das PowerShell-Team ist, dass PowerShell der neueste und größte Angriffspunkt für Skript-Kiddies wird. Sie haben ein paar Sicherheitsvorkehrungen getroffen, um sicherzustellen, dass dies nicht passiert, also schauen wir uns sie an.

Die einfachste Form des Schutzes ergibt sich aus der Tatsache, dass die PS1-Dateierweiterung( die Erweiterung, die für ein PowerShell-Skript verwendet wird) nicht bei einem PowerShell-Host registriert ist, der tatsächlich bei Notepad registriert ist. Das heißt, wenn Sie auf eine Datei doppelklicken, wird sie mit Notepad geöffnet, anstatt zu laufen.

Zweitens können Sie keine Skripts von 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 C-Laufwerk ausführen möchten, müssen Sie Folgendes eingeben:

C: \ runme.ps1

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

. \ Runme.ps1

PowerShell verfügt schließlich über so genannte Ausfü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 sie ausführen möchten. Es gibt 4 bemerkenswerte Ausführungsrichtlinien:

  • Restricted : Dies ist die Standardkonfiguration in PowerShell. Diese Einstellung bedeutet, dass kein Skript unabhängig von seiner Signatur ausgeführt werden kann. Das einzige, was in PowerShell mit dieser Einstellung ausgeführt werden kann, ist ein einzelner Befehl.
  • AllSigned: Mit dieser Einstellung können Skripts in PowerShell ausgeführt werden. Das Skript muss eine zugehörige digitale Signatur von einem vertrauenswürdigen Herausgeber haben. Bevor Sie die Skripts von vertrauenswürdigen Herausgebern ausführen, wird eine Eingabeaufforderung angezeigt.
  • RemoteSigned : Diese Einstellung ermöglicht das Ausführen von Skripts, erfordert jedoch, dass den Skript- und Konfigurationsdateien, die aus dem Internet heruntergeladen werden, eine zugehörige digitale Signatur von einem vertrauenswürdigen Herausgeber zugeordnet ist. Skripts, die vom lokalen Computer ausgeführt werden, müssen nicht signiert sein. Es gibt keine Eingabeaufforderungen vor dem Ausführen des Skripts.
  • Uneingeschränkt : Ermöglicht das Ausführen nicht signierter Skripts, einschließlich aller aus dem Internet heruntergeladenen Skripts und Konfigurationsdateien. Dies schließt Dateien aus Outlook und Messenger ein. Das Risiko besteht darin, Skripts ohne Signatur oder Sicherheit auszuführen. Wir wiederholten, dass Sie uns diese Einstellung nie geben.

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

Get-ExecutionPolicy

Für diesen Kurs und die meisten anderen Umstände ist die RemoteSigned-Richtlinie die beste. Fahren Sie fort und ändern Sie Ihre Richtlinie mithilfe der folgenden Anweisungen.

Hinweis: Dies muss von einer erhöhten PowerShell-Konsole aus erfolgen.

Set-ExecutionPolicy RemoteSigned

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

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

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