Auskunftsfreudige PowerShell (Teil 1) (oder warum Entwickler bei der PowerShell nicht immer im Vorteil sind)

Dass die „Auskunftstfreudigkeit“ der PowerShell dank umgangreicher Metadaten legendär ist, beweisen zahlreiche Beispiele. Wie wäre es z.B. mit einem Befehl, der alle Cmdlets auflistet, bei denen es ein InputObject-Parameter gibt? Kein Problem, die ParamaterSets-Eigenschaft, über die ein CmdletInfo-Objekt verfügt, auf dem jedes Cmdlet basiert, führt in diese Richtung. Die Eigenschaft ist als spezielle Collection zwar ein wenig sperrig, doch kommt man an die gesuchten Informationen trotzdem relativ einfach heran, wie das folgende Beispiel zeigt:

get-command | foreach-object { if (($_.ParameterSets[0].Parameters | select-object Name) -match „InputObject“) { $_ }}

Die „Kunst“ besteht darin, die PowerShell arbeiten zu lassen, in diesem Fall den Match-Operator, der sich einfach den Text dort sucht wo er ihn findet, nämlich in den von Select-Object in die Pipeline gelegten Namen der Parameter.

Wer bei der PowerShell wie ein „Entwickler“ denkt, macht sich oft das Leben unnötig schwer. Klar, man kann die Namen auch erhalten, in dem man brav ForEach-Schleifen schachelt und if-Abfragen einbaut, so geht es nicht nur deutlich einfacher, man lernt dabei auch etwas mehr über die „wahre Natur“ der PowerShell.

Schreibe einen Kommentar

Bitte logge dich mit einer dieser Methoden ein, um deinen Kommentar zu veröffentlichen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s