Categories
PowerShell

Powershell Befehle mit bestimmten Parametern ermitteln

Ich möchte kurz erläutern, wie ein PowerShell Befehl gefunden werden kann, der einen bestimmten Parameter besitzt. Dieser Tipp erscheint auf den ersten Blick nicht sonderlich sinnvoll. An einem Beispiel wird aber schnell die sinnvolle Verwendung deutlich. Insbesondere Anfänger, welche die PowerShell erlernen, werden diese Abfrage schnell zu schätzen wissen.

Ich möchte zum Beispiel alle Befehle finden, die etwas rekursiv durchsuchen (Dateien/Verzeichnisse/Regitry/etc):

Get-Command|where { $_.Parameters.Keys -contains "recurse" }

CommandType Name Definition
———– —- ———-
Alias copy Copy-Item
Cmdlet Copy-Item Copy-Item [-Path] [[-Destination]
Alias cp Copy-Item
Alias cpi Copy-Item
Alias del Remove-Item
Alias dir Get-ChildItem
Alias erase Remove-Item
Alias gci Get-ChildItem
Cmdlet Get-ChildItem Get-ChildItem [[-Path] ] [[-Filter]
Cmdlet Get-WmiObject Get-WmiObject [-Class] [[-Property]
Alias gwmi Get-WmiObject
Alias ls Get-ChildItem
Alias rd Remove-Item
Cmdlet Remove-Item Remove-Item [-Path] [-Filter
Alias ri Remove-Item
Alias rm Remove-Item
Alias rmdir Remove-Item

Ähnlich hilfreich kann die Suche nach Befehlen, die sich auf Windows Dienste (Service) oder die Befehle mit Rechnernamen als Parameter enthalten, sein:

Get-Command | Where-Object { $_.parameters.keys -Match "Service"}

Get-Command | Where-Object { $_.parameters.keys -Match "ComputerName"}