5 Cmdlets - Erste Schritte mit PowerShell
PowerShell entwickelt sich schnell zur bevorzugten Skriptsprache und CLI von Power-Usern sowie von IT-Profis. Es lohnt sich, einige Befehle zu erlernen, um Ihnen den Einstieg zu erleichtern. Wir haben also 5 nützliche Cmdlets für Sie, die Sie heute lernen können.
Get-Command
Das Get-Command ist eines der nützlichsten Cmdlets in der gesamten PowerShell. Es hilft Ihnen, sich mit PowerShell vertraut zu machen, indem Sie nach bestimmten Cmdlets suchen können. Die Verwendung von Get-Command allein ist zwar nicht sehr nützlich, da er jeden Befehl der PowerShell ausspuckt.
Hieraus können wir jedoch erkennen, dass Objekte, die von PowerShell ausgegeben werden, sowohl eine Name- als auch eine ModuleName-Eigenschaft haben. Mithilfe dieser Informationen können wir unsere Suche verfeinern, indem Sie nach Cmdlets suchen, die bestimmte Begriffe enthalten. Wenn ich beispielsweise alle Cmdlets finden wollte, die das Wort "IP" enthalten, könnte ich Folgendes tun:
Get-Command -Name * IP *
Wie Sie sehen, erhalten wir noch einige Ergebnisse. Als nächste Option können Sie in einem bestimmten Modul suchen. In unserem Fall werde ich das NetTCPIP-Modul wählen.
Get-Command -Module NetTCPIP -Name * IP *
Hilfe erhalten
Nachdem Sie das gewünschte Cmdlet mit Get-Command gefunden haben, möchten Sie die Syntax und die Verwendung dieses bestimmten Cmdlets kennen. Hier kommt Get-Help ins Spiel. Wenn Sie jemals die Befehlszeile in Windows verwendet haben, haben Sie wahrscheinlich Folgendes getan:
ipconfig /?
Das funktioniert in PowerShell nicht. Dies liegt daran, dass in PowerShell ein Leerzeichen verwendet wird, um einen Befehl von seinen Parametern zu trennen. Stattdessen verwenden wir Get-Help und übergeben einen Cmdlets-Namen als Parameter an Get-Help.
Get-Help Get-Process
Get-Member
Mit Get-Member können wir Informationen zu den Objekten abrufen, die von Cmdlets zurückgegeben werden. Der Haken an get-member ist, dass es auf die Pipeline-Funktion von PowerShell angewiesen ist. Um dies zu demonstrieren, können wir das Cmdlet Get-Process verwenden.
Wie Sie sehen, zeigt die Ausgabe von PowerShell einige Eigenschaften, die Sie oben in jeder Spalte sehen können. Das erste Problem ist, dass dies die Eigenschaften sind, die Sie die meiste Zeit suchen, aber es gibt noch mehr davon. Das zweite Problem ist, dass es keine Methoden anzeigt, die wir für das Objekt aufrufen können. Um die Methoden und Eigenschaften zu sehen, können wir unsere Ausgabe wie folgt an Get-Member weiterleiten:
Get-Process | Get-Member
Während es Ihnen momentan vielleicht nichts bedeutet, müssen Sie früher oder später Get-Member verwenden. Je früher Sie lernen, es zu verwenden, desto besser. Als Beispiel könnten wir mit den Informationen aus der Ausgabe Folgendes tun:
Startprozess Notepad.exe
$ NotepadProc = Get-Process -Name-Notizblock
$ NotepadProc.WaitForExit ()
Start-Prozess calc.exe
Dieses Skript startet den Editor, es weist dann der $ NotepadProc-Variablen die Ausgabe von "Get-Process -Name-Notizblock" zu. Dann rufen wir die WaitForExit-Methode für $ NotepadProc auf. Dadurch wird das Skript angehalten, bis Sie den Editor schließen, nachdem Sie den Editor geschlossen haben Dann startet der Rechner.
$ _ (Aktuelles Pipeline-Objekt)
Es ist zwar nicht gerade ein Cmdlet, es ist jedoch eine der am häufigsten verwendeten speziellen Variablen in PowerShell. Der offizielle Name für $ _ ist "das aktuelle Pipeline-Objekt". Es wird in Skriptblöcken, Filtern, der Prozessklausel von Funktionen, where-object, foreach-object und switch verwendet. Es ist jedoch einfacher, dies anhand eines Beispiels zu erläutern, das uns zu unserem nächsten und letzten Cmdlet, Where-Object, führt.
Wo-Objekt
Wo-Objekt genau das tut, was es klingt, wählt es ein Objekt basierend darauf aus, ob es bestimmte Kriterien erfüllt. Dies führt $ _ zusammen mit den Eigenschaften, die wir mit Get-Member sehen können. Um dies zu demonstrieren, werden wir die Ausgabe von Get-Process an das Cmdlet Where-Object weiterleiten.
Get-Process | Where-Object $ _. Name -eq "iexplore"
Also, was ist hier los, fragst du? Das erste, was wir tun, ist, eine Liste der Prozesse auf unserem Computer abzurufen und die Ausgabe (mit dem Zeichen |) an unser Where-Object-Cmdlet zu übergeben, das einen Skriptblock als Parameter verwendet. Der Skriptblock (durch die geschweiften Klammern definiert) weist die Where-Object-Cmdlets an, nur Objekte auszuwählen, deren Name-Parameter gleich "iexplore" ist. Daher wird nur eine Liste der ausgeführten IE-Instanzen angezeigt. Das ist alles, was Spaß macht!