在PowerShell中的数组的所有对象上select一个属性的值
比方说,我们有一个对象数组$对象。 假设这些对象具有“名称”属性。
这是我想要做的
$results = @() $objects | %{ $results += $_.Name }
这有效,但可以以更好的方式完成吗?
如果我做这样的事情:
$results = objects | select Name
$results
是一个具有Name属性的对象的数组。 我想$结果包含一个名称的数组。
有没有更好的办法?
我想你可能会使用Select-Object
的ExpandProperty
参数。
例如,要获取当前目录的列表,只需显示Name属性,就可以执行以下操作:
ls | select -Property Name
这仍然返回DirectoryInfo或FileInfo对象。 您可以随时通过pipe道检查通过pipe道进入的typesGet-Member (别名gm
)。
ls | select -Property Name | gm
因此,要将对象扩展为您正在查看的属性types,可以执行以下操作:
ls | select -ExpandProperty Name
在你的情况下,你可以做下面的事情,让一个variables是一个string数组,其中的string是Name属性:
$objects = ls | select -ExpandProperty Name
作为更简单的解决scheme,您可以使用:
$results = $objects.Name
其中应该用$objects
元素的所有'Name'属性值来填充$results
。