Geek School Erlernen der Verwendung von Cmdlets in PowerShell
Wenn Sie ipconfig oder ein Ping durch die Eingabeaufforderung verwendet haben, sind Sie auf halbem Weg ein PowerShell-Ninja. Kommen Sie mit und entdecken Sie Cmdlets in dieser Installation der Geek School.
Schauen Sie sich unseren ersten Artikel zur Einführung von PowerShell an und bleiben Sie die ganze Woche über auf dem Laufenden.
Die Anatomie eines Cmdlets
Im ersten Teil der Serie haben wir ein Cmdlet gesehen, das ungefähr so aussah:
Update-Hilfe
PowerShell-Cmdlets verfügen über eine Verb-Noun-Syntax, die oben zu sehen ist. Wichtig ist, dass das Nomen immer singulär ist, obwohl das Cmdlet möglicherweise mehr als ein Ergebnis zurückgibt. Um eine Liste der rechtlichen Verben in PowerShell anzuzeigen, können Sie das Cmdlet Get-Verb verwenden.
Wenn Sie die legalen Verben kennen und sich an die Regel für ein einzelnes Substantiv erinnern, können Sie die Namen der Cmdlets wirklich erraten. Angenommen, Sie möchten dies tun erhalten eine Liste von Dienstleistungen und ihr Status - das ist richtig, so einfach wie Get-Service. Wie denkst du würden wir erhalten eine Liste von Laufen Prozesse - Das ist richtig, Get-Process macht den Trick.
Get-Process
Dies macht es einfach, mit jeder Technologie zu arbeiten. Wenn Sie beispielsweise die Exchange-Cmdlets geladen haben, können Sie leicht eine Liste der Postfächer auf dem Server abrufen, indem Sie Folgendes verwenden:
Get-Mailbox
Es gibt jedoch eine Ausnahme. Bei allen anderen technologiebezogenen Befehlen ist ein Präfix erforderlich. Wenn Sie beispielsweise die aktuell über Remote Desktop angemeldeten Benutzer abrufen möchten, geben Sie Folgendes ein:
Get-RDUserSession
Welches ist im Screenshot unten zu sehen.
Hinweis: Dieser Screenshot wurde auf einer Server 2012-Box erstellt, da Sie hier die meisten technologiespezifischen Module finden.
Vor einiger Zeit las ich einen Artikel von Don Jones, dem Pate von PowerShell, in dem er erklärte, dass Exchange ausgeliefert wurde, bevor dieses Präfix zu den Cmdlets hinzugefügt wurde.
Aliase
Eine weitere Funktion, mit der PowerShell ausgestattet ist, ist die Möglichkeit, auf mehrere Arten denselben Befehl auszuführen - Aliasnamen, wenn Sie möchten. Das Tolle an ihnen ist, dass sie viele Befehle enthalten, die Sie möglicherweise in der Eingabeaufforderung verwendet haben, sowie einige Linux-Aliase. In PowerShell können Sie beispielsweise eine Verzeichnisliste erhalten, indem Sie Folgendes verwenden:
Get-ChildItem
Verwendet, um die Eingabeaufforderung zu verwenden? Mach dir keine Sorgen, sie haben dich bedeckt.
Haben Sie einen Linux-Hintergrund? Sie haben Sie auch dort abgedeckt.
Wenn Sie seit einigen Jahren Skripts erstellen, neigen Sie dazu, faul zu werden und häufig Aliasnamen zu verwenden. Dies hilft jedoch nicht für Neuankömmlinge, die unseren Code lesen. Um zu sehen, welchen Befehl ein Alias unter der Haube ausführt, können Sie Folgendes verwenden:
Get-Alias -Name ls
Wenn Sie jedoch der Meinung sind, dass es an der Zeit ist, Ihr Spiel zu verbessern, können Sie den Definitionsparameter verwenden, um alle Aliasnamen für ein Cmdlet abzurufen:
Get-ChildItem -Definition Get-ChildItem
Wenn Sie aus einem anderen Hintergrund stammen, können Sie Ihre eigenen Aliase hinzufügen, indem Sie folgende Schritte ausführen:
New-Alias -Name icanhazfilez -Value Get-ChildItem
Offensichtlich müssen Sie "icanhazfilez" durch den Namen Ihres neuen Alias und Get-ChildItem durch das Cmdlet ersetzen, das Sie unter der Haube ausführen möchten.
Zu beachten ist, dass Sie alle Aliasnamen verlieren, die Sie beim Schließen der Shell definiert haben. Sie können dies umgehen, indem Sie ihre Definition Ihrem Profilskript hinzufügen.
Parameter abschneiden
Mit Windows PowerShell können Sie auch Parameternamen bis zu dem Punkt abschneiden, an dem sie mehrdeutig werden, d. H. Bis zu dem Punkt, an dem PowerShell nicht mehr herausfinden kann, über welchen Parameter Sie sprechen. Zum Beispiel:
Get-Service -Name "Apple Mobile Device" -ComputerName localhost
Ist das gleiche wie:
Get-Service -Na 'Apple Mobile Device' von Localhost
Wenn Sie die Parameternamen zu unklar machen, wird ein Fehler angezeigt.
Legacy-Befehle
Schließlich funktionieren die Befehle, die Sie kennen und lieben, auch in PowerShell.
ping www.google.com
Denken Sie daran, dass ältere Anwendungen wie Ping einen String ausgeben, und es ist oft eine bessere Möglichkeit, dasselbe mit einem PowerShell-Cmdlet zu tun.
Anstatt eine lange Textfolge auszugeben, bleibt jetzt ein Objekt übrig, das wir in der morgigen Ausgabe der Geek School betrachten werden.