Erstellen Sie ein vollständiges PowerShell-Dienstprogramm
Dieser Artikel ist eine Textversion einer Lektion aus unserem PowerShell-und Active Directory Essentials-Videokurs (verwenden Sie den Code‘ Blog ‚ für den freien Zugriff).
Der Kurs hat sich als sehr beliebt erwiesen, da er Sie durch die Erstellung eines vollständigen Active Directory-Verwaltungsprogramms von First Principles führt.,
Holen Sie sich den kostenlosen PowerShell-und Active Directory Essentials-Videokurs
Codierung mit PowerShell
Es kann schwierig sein, mit PowerShell zu beginnen, insbesondere wenn Sie sich im Laufe der Jahre an die Arbeit mit dem cmd gewöhnt haben.exe-Befehlszeile oder batch-Dateien., In diesem Artikel (basierend auf Lektion 2 unseres PowerShell-und Active Directory-Kurses) behandeln wir, wie und warum Sie Ihre Fähigkeiten auf PowerShell aufrüsten sollten, sowie die Grundlagen zum Starten des PowerShell-Editors, die Befehlsvervollständigung und wie Sie immer aktuelle Hilfe und Beispiele erhalten.
Ausführen von Befehlen
Die PowerShell-Konsole ist eine interaktive Konsole, mit der Sie verschiedene Befehle in Echtzeit ausführen können. Es ist nicht erforderlich, ein Skript in Notepad zu bearbeiten und es dann separat auszuführen, eine große Zeitersparnis.,
Wenn Sie sich in einer Organisation befinden, die es schon lange gibt, haben Sie wahrscheinlich bereits einige kleinere Skripte, Bat-Dateien oder Prozeduren, die Sie über die cmd ausführen.exe-Befehlszeile. Tolle Neuigkeiten! Sie können all das mit PowerShell aufrufen, dies war eine tiefe Designentscheidung von Microsoft, da sie versuchten, den Übergang für Systemadministratoren so einfach wie möglich zu gestalten.
Im Aussehen sieht der PowerShell-Editor genau wie der cmd aus und funktioniert.exe-Eingabeaufforderung Umgebung., Die Dienstprogramme und Fähigkeiten, die Sie bereits kennen, funktionieren jetzt ohne Änderung in PowerShell. Wenn Sie daran arbeiten, den Übergang von einmaligen Aufgaben zu einem automatisierteren Netzwerk zu ermöglichen, ist es eine gute Möglichkeit, PowerShell anstelle der Eingabeaufforderung zu starten.
Alle Ihre häufig verwendeten Dienstprogramme wie ping, ipconfig, dir usw. funktionieren genau so, wie Sie es erwartet haben.
So finden Sie PowerShell-Befehle
Die Leute lieben PowerShell, weil es so mächtig ist., Aber diese Macht kommt von einer absolut wahnsinnigen Menge an Komplexität. Es ist einfach nicht machbar oder praktisch für jemanden, sich all die verschiedenen Befehle, Cmdlets, Flags, Filter und andere Möglichkeiten zu merken, PowerShell zu sagen, was zu tun ist.
Gott sei Dank, direkt in den Editor eingebaut sind mehrere Werkzeuge, die Ihnen helfen, mit dieser Tatsache umzugehen.
Tab-Vervollständigung
Es ist nicht erforderlich, alle verschiedenen Befehle oder die genaue Schreibweise eines Befehls zu speichern., Geben Sie
get-c
In den Editor ein und drücken Sie die Tabulatortaste – Sie durchlaufen alle Befehle, beginnend mit dem, was Sie bisher eingegeben haben. Dies funktioniert in jedem Abschnitt des Befehls, den Sie aufrufen möchten, dem Namen (wie unten gezeigt), aber auch Flags und Pfaden, die Sie bearbeiten, um das gewünschte Ergebnis zu erzielen.
Get-Command
Was passiert, wenn Sie den Namen des gesuchten Befehls nicht kennen? In diesem Fall würden Sie einen Befehl verwenden, um andere Befehle zu finden: Get-Command.,
Bei der Suche nach Befehlen ist es wichtig zu beachten, dass sie eine Syntax haben: VERB-NOMEN. Normalerweise sind die Verben Dinge wie Get, Set, Add, Clear, Write und Read und die Substantive sind die Dateien, Server oder andere Elemente in Ihrem Netzwerk und Anwendungen.
Get-Command ist ein Erkennungstool zur Erkundung der auf Ihrem System verfügbaren Befehle.,
Powershells Befehlssyntax
Einmal beschrieb jemand die Perl – Skriptsprache als“ ausführbares Zeilenrauschen “ – ein unglaublich nützliches Werkzeug mit einer undurchsichtigen Syntax und einer entsprechend hohen Lernkurve.
Obwohl nicht ganz auf dieser Ebene die traditionelle Eingabeaufforderung in Windows ist nicht zu weit weg. Betrachten Sie eine allgemeine Aufgabe wie das Finden aller Elemente in einem Verzeichnis, dessen Namen mit der Zeichenfolge ‚Foo’beginnen.
CMD: FOR /D /r %G in ("Foo*”) DO @Echo %G
FÜR und ZEIGEN an, dass es sich um eine Schleife handelt.,
Das /D – Flag zeigt an, dass dies für Verzeichnisse ist
Das /r-Flag zeigt an, dass „Dateien, die im Pfad verwurzelt sind“
Das Muster, das den Satz von Dateien definiert, die durchlaufen werden sollen, mit „in“bezeichnet wird
@Echo weist das Skript an, das Ergebnis jeder Schleife auszuschreiben, und schließlich ist
%G der „implizite Parameter“ und wird ausgewählt, weil frühere Entwickler bereits die Pfadnamenformatbuchstaben a, d, f, n, p, s, t und x verwendet hatten. von nicht verwendeten Buchstaben für zurückgegebene Variablen ( G, H, I, J, K, L, M) – mit anderen Worten, es ist ein hässlicher Hack.,
Vergleichen Sie das mit dem PowerShell-Äquivalent:
PowerShell: Get-ChildItem -Path C:\Example -Filter ‘Foo*’
Die Ausgabe ist funktional gleich, aber selbst in diesem ziemlich trivialen Beispiel ist es viel einfacher zu verstehen, was passiert. Es ist sofort offensichtlich, was alle Elemente im Befehl tun und wie Sie sie ändern können. Das einzige, was hier nicht offensichtlich ist, ist das * Platzhalterzeichen (in beiden Beispielen vorhanden), das angibt, dass das Muster, das zum Abgleichen von Elementen verwendet wird, mit ‚Foo‘ beginnen und mit etwas anderem enden sollte.,
Von hier aus wird es immer besser, wenn Sie wissen möchten, wie Sie nur Dateien (nicht Verzeichnisse) im Pfad identifizieren können. Sie können die Dokumente ausgraben, googeln und versuchen, dies mit der Befehlszeilenversion zu klären, oder wenn Sie sich in PowerShell befinden, geben Sie „-“ ein und drücken Sie die Tabulatortaste, um die Flag-Optionen zu durchlaufen, bis die offensichtliche Lösung angezeigt wird.
Eine Große String-vs-Objekt-Eigenschaften
– Server sind nicht gut für jeden, wenn Sie nicht online sind., Aus diesem Grund verbringen die Leute übermäßig viel Zeit damit, so zu tun, als wären sie Sonaroperatoren auf einem U-Boot und pingen sie an (ja, deshalb heißt es tatsächlich – https://en.wikipedia.org/wiki/Ping_(networking_utility)
Während die Ausgabe von ping nützlich ist (und Sie ping in PowerShell verwenden können), ist die Ausgabe am Ende des Tages nur eine große Zeichenfolge – eine Reihe von Buchstaben-und Zahlenzeichen ohne definierte Unterbrechungen zwischen ihnen).
PowerShell verfügt über einen Befehl, der analog zu Ping ist, aber Daten zurückgibt, die strukturiert sind, sodass die Arbeit einfach ist. Dieser Befehl ist Testverbindung.,
Unten sehen Sie die Ausgabe des Ping eines Servers (im lokalen Netzwerk als “ DC “ bezeichnet) und die entsprechende Testverbindungsausgabe.
Abgesehen davon, dass es einfacher zu lesen ist, ist es wirklich wichtig, dass Sie diese Informationen jetzt an einen anderen Befehl weitergeben können, Integrieren Sie es in ein größeres Dienstprogramm (da dieser vollständige Kurs darauf hinarbeitet) oder optimieren Sie es einfach, damit es sinnvoller ist.,
Geting Help System
Bis jetzt haben wir uns darauf konzentriert, wie man einen bestimmten Befehl manipuliert, wenn man sich mitten drin befindet (über Tab-Vervollständigung), aber wenn man mit PowerShell immer mehr anfängt, werden die Befehle mit noch komplexeren Optionen komplexer. Während die Verb-Nomen-Syntax hilft, hilft noch mehr:
1. Aktuelle Dokumentation
2. Viele Beispiele
Cmdlethilfe
In der Praxis sollten Sie den Get-Befehl kombinieren (um herauszufinden, was zu verwenden ist) und dann Get-Help verwenden, um herauszufinden, wie dieser bestimmte Befehl verwendet wird.,
Ein praktisches Beispiel dafür: Angenommen, Sie müssen alle laufenden Windows-Dienste auf einem Computer identifizieren.
Sie würden zunächst nach Befehlen für die Dienstinteraktion suchen:
Get-Command service
Was Ihnen auf einen Blick sagen würde, dass Sie auf dem richtigen Weg sind. Wenn Sie an die standardmäßige Verb-Nomen-Syntax von PowerShell-Befehlen denken, möchten Sie untersuchen, wie Sie „Get-Service“ richtig verwenden.
MicroSoft Office Get-Service-Dokumentation
Dazu würden Sie einen neuen Befehl ‚Get-Help’verwenden., Beginnen Sie mit der Eingabe von
„Get-Help -“ und drücken Sie die Tabulatortaste
Sie werden schnell die verfügbaren Optionen finden, die offensichtlich am besten geeignete ist „- Name“, also würden Sie versuchen:
Sofort erhalten Sie die vollständige Syntax (und dass Sie Namen basierend auf Filtern einschließen oder ausschließen können).,
Wenn Sie tief in einen bestimmten Aspekt des Befehls eintauchen möchten, können Sie mit Get-Help einen weiteren Drilldown durchführen, einschließlich der einzelnen Parameter
Get-Help -Name Get-Service - Parameter Name
PowerShell-Hilfebeispiele
Da wir alle Menschen sind, die dies lesen (Google Bot ist nicht beleidigend), müssen wir die gleichen mentalen Hürden in Bezug auf mustererkennung und Übersetzung abstrakter Befehlssyntaxen in das, was wir eigentlich eingeben sollten, um das zu erreichen, was wir brauchen, um den Tag zu überstehen.,
Wenn Sie in „-examples“ eingeben oder das Flag „-detail“ für Get-Help verwenden, erhalten Sie eine Reihe von Beispielen für die Verwendung des Befehls.
Hier ist die Ausgabe für:
Get-Help -Name Get-Service -Examples
Aktuell bleiben
Nichts ist frustrierender, als genau das einzugeben, was ein Beispiel sagt, dass Sie sollten, nur damit es nicht wie dokumentiert funktioniert. Dies wird häufig durch veraltete Dokumentation, schlechte Beispiele oder aktualisierte Bibliotheken verursacht.,
Umgehen Sie diese Frustrationen und erhalten Sie neue Beispiele und Korrekturen mit dem Befehl
update-help
. sie starten den Download-Vorgang.
Nächste Schritte mit PowerShell
Möchten Sie mehr erfahren? Verwenden Sie den Freischaltcode „Blog“ für den kostenlosen Zugriff auf den vollständigen PowerShell-und Active Directory Essentials-Videokurs.