10Aug

Geek-Schule: Lernen, Cmdlets in PowerShell zu verwenden

click fraud protection

Wenn Sie ipconfig oder ping über die Eingabeaufforderung verwendet haben, sind Sie auf dem besten Weg, ein PowerShell-Ninja zu werden. Also komm und begleite uns, während wir Cmdlets in dieser Installation der Geek School entdecken.

Seien Sie sicher, unseren ersten Artikel zu lesen, der PowerShell einführt, und bleiben Sie während der ganzen Woche für den Rest unserer Reihe getunt.

Die Anatomie eines Cmdlet

Im ersten Teil der Serie sahen wir ein Cmdlet, das ungefähr so ​​aussah:

Update-Hilfe

PowerShell-Cmdlets haben eine Verb-Nomen-Syntax, die oben zu sehen ist. Wichtig ist, dass das Substantiv immer Singular ist, obwohl das Cmdlet mehr als ein Ergebnis zurückgeben könnte. Um eine Liste der juristischen Verben in PowerShell anzuzeigen, können Sie das Cmdlet Get-Verb verwenden.

Die Kenntnis der juristischen Verben und das Erinnern an die Singular-Nomen-Regel hilft beim Erraten von Cmdlet-Namen. Angenommen, Sie möchten eine Liste von -Diensten und ihren Status erhalten - das ist richtig, es ist so einfach wie Get-Service. Wie denken Sie, würden wir

instagram viewer
eine Liste der laufenden Prozesse bekommen - das stimmt, Get-Process wird den Trick machen.

Get-Process

Dies macht es wirklich einfach mit jeder Technologie zu arbeiten. Wenn Sie beispielsweise die Exchange-Cmdlets geladen haben, können Sie problemlos eine Liste der Postfächer auf dem Server abrufen, indem Sie Folgendes verwenden:

Get-Mailbox

Es gibt jedoch eine Ausnahme. Abgesehen von diesem Austausch benötigen alle anderen technologiespezifischen Befehle ein Präfix. Wenn wir beispielsweise die Benutzer abrufen möchten, die derzeit über Remotedesktop angemeldet sind, geben Sie Folgendes ein:

Get-RDUserSession

, das im folgenden Screenshot zu sehen ist.

Hinweis: Dieser Screenshot wurde in einer Server 2012-Box erstellt, da Sie dort die meisten technologiespezifischen Module finden.

Vor einiger Zeit las ich einen Artikel von Don Jones, dem Godfather von PowerShell, in dem er erklärte, dass Exchange ausgeliefert wurde, bevor dieses Präfix Cmdlets hinzugefügt wurde. Daher wurde es nie implementiert und wird es nie tun.

Aliases

Ein weiteres Feature von PowerShell ist die Fähigkeit, mehrere Möglichkeiten zu haben, denselben Befehl auszuführen - Aliasnamen, wenn Sie so wollen. Das Tolle daran ist, dass sie viele Befehle enthalten, die Sie möglicherweise an der Eingabeaufforderung verwendet haben, sowie einige Linux-Aliase. In PowerShell können wir beispielsweise eine Verzeichnisliste abrufen, indem wir Folgendes verwenden:

Get-ChildItem

Wird die Eingabeaufforderung verwendet? Mach dir keine Sorgen, sie haben dich bedeckt.

Haben Sie einen Linux-Hintergrund? Sie haben dich auch dort abgedeckt.

Wenn Sie seit ein paar Jahren scripten, neigen Sie dazu, faul zu werden und anfangen, Aliase viel zu verwenden, aber das hilft Neulingen nicht, die unseren Code lesen werden. Um zu sehen, welchen Befehl ein Alias ​​unter der Haube ausführt, können Sie Folgendes verwenden:

Get-Alias ​​-Name ls

Wenn Sie andererseits das Gefühl haben, dass es an der Zeit ist, Ihr Spiel zu erweitern, können Sie den Definitionsparameter verwendenAlle Aliase für ein Cmdlet:

Get-ChildItem -Definition Get-ChildItem

Wenn Sie aus einem anderen Hintergrund stammen, können Sie Ihre eigenen Aliase hinzufügen, indem Sie folgendermaßen vorgehen:

New-Alias ​​-Name icanhazfilez -Value Get-ChildItem

Sie müssen "icanhazfilez" durch den Namen Ihres neuen Alias ​​und "Get-ChildItem" durch das Cmdlet ersetzen, das unter der Haube ausgeführt werden soll.

Beachten Sie, dass Sie alle Aliase verlieren, die Sie beim Schließen der Shell definiert haben. Sie können dies umgehen, indem Sie ihre Definition zu Ihrem Profilskript hinzufügen.

Abschneiden von Parametern

Mit Windows PowerShell können Sie Parameternamen auch bis zu dem Punkt abschneiden, an dem sie mehrdeutig werden, dh bis zu dem Punkt, an dem PowerShell nicht mehr herausfinden kann, von welchem ​​Parameter Sie sprechen. Zum Beispiel:

Get-Service -Name 'Apple Mobilgerät' -ComputerName localhost

Ist das gleiche wie:

Get-Service -Na 'Apple Mobile Device' -Com localhost

Wenn Sie die Parameter Namen zu vieldeutig Sie zu mehrdeutig machenwird einen Fehler bekommen.

Legacy-Befehle

Schließlich funktionieren die Befehle, die Sie kennen und lieben, weiterhin in PowerShell.

ping www.google.com

Denken Sie nur daran, dass Legacy-Anwendungen wie Ping eine Zeichenfolge ausgeben, und es gibt oft einen besseren Weg, dasselbe mit einem PowerShell-Cmdlet zu tun.

Anstatt eine lange Textreihe auszugeben, bleibt uns nun ein Objekt, das wir uns in der morgigen Ausgabe der Geek School ansehen werden.