在PowerShell中的数组的所有对象上select一个属性的值

比方说,我们有一个对象数组$对象。 假设这些对象具有“名称”属性。

这是我想要做的

$results = @() $objects | %{ $results += $_.Name } 

这有效,但可以以更好的方式完成吗?

如果我做这样的事情:

  $results = objects | select Name 

$results是一个具有Name属性的对象的数组。 我想$结果包含一个名称的数组。

有没有更好的办法?

我想你可能会使用Select-ObjectExpandProperty参数。

例如,要获取当前目录的列表,只需显示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