Wie kann ich eine Eigenschaft eines Objekts in Powershell erhalten, ohne Klammern zu verwenden?

13

Ich stelle oft fest, dass ich einen Befehl in Klammern einschließen und dann den Eigenschaftszugriffsoperator (Punktsyntax) verwenden muss, um den Wert einer Eigenschaft abzurufen. Dies ist ziemlich ärgerlich, da ich zum Anfang der Zeile zurückkehren muss, wenn ich lieber einfach weiter tippen möchte, wo ich bin. Es ist besonders ärgerlich, wenn ich mich mitten in einem größeren Satz von Pipe-Befehlen befinde.

Beispiel

Wenn ich den folgenden Befehl habe

Get-PSProvider FileSystem

und um die DrivesEigenschaft zu erhalten, müsste ich zuerst den gesamten Befehl in Klammern setzen:

(Get-PSProvider FileSystem).Drives

Gibt es eine schnellere Möglichkeit, den Wert einer einzelnen Immobilie zu ermitteln?

brianpeiris
quelle

Antworten:

14

Sie können verwenden Select-Object -ExpandProperty <property name>. Dies kann mit dem Alias ​​abgekürzt werden, indem selectnur ein Teil des Eigenschaftsnamens eingegeben wird:

Get-PSProvider FileSystem| select -exp Drives

Ein zusätzlicher Vorteil dieser Methode besteht darin, dass Sie auf eine einzelne Eigenschaft für mehrere Objekte zugreifen können.

Dies gibt nichts zurück ( Update: Dies funktioniert in PowerShell v3.):

(Get-PSProvider).Drives

Dies gibt jedoch die Laufwerke für alle Anbieter zurück:

Get-PSProvider| select -exp Drives
Rynant
quelle
Sehr interessant. Danke für die Verbesserung.
Soandos