如何在不使用括号的情况下在 powershell 中获取对象的属性?

bri*_*ris 13 powershell

我经常发现必须将命令括在括号中,然后使用属性访问运算符(点语法)来获取属性的值。这很烦人,因为当我只想继续输入我所在的位置时,我必须回到行的开头。当我在一组更大的管道命令中间时,这尤其令人讨厌。

例子

如果我有以下命令

Get-PSProvider FileSystem
Run Code Online (Sandbox Code Playgroud)

并且我想获得该Drives属性,我必须首先将整个命令括在括号中:

(Get-PSProvider FileSystem).Drives
Run Code Online (Sandbox Code Playgroud)

有没有更快的方法来获得单个财产的价值?

Ryn*_*ant 15

您可以使用Select-Object -ExpandProperty <property name>. 这可以使用别名select并只输入属性名称的一部分来缩短:

Get-PSProvider FileSystem| select -exp Drives
Run Code Online (Sandbox Code Playgroud)

此方法的另一个好处是您可以访问多个对象的单个属性。

这不会返回任何内容(更新:这在 PowerShell v3 中有效。):

(Get-PSProvider).Drives
Run Code Online (Sandbox Code Playgroud)

但是,这将返回所有提供程序的驱动器:

Get-PSProvider| select -exp Drives
Run Code Online (Sandbox Code Playgroud)