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

让我们假设我们有一个对象数组$ objects。假设这些对象有一个“Name”属性。

这是我想做的

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

这工作,但可以做一个更好的方法吗?

如果我做类似的事情:

 $results = objects | select Name

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

有没有更好的办法?

最佳答案
我想你可以使用Select-Object的ExpandProperty参数。

例如,要获取当前目录的列表,只显示Name属性,可以执行以下操作:

ls | select -Property Name

这仍然返回DirectoryInfo或FileInfo对象。您可以随时通过管道检查通过管道的类型为Get-Member(别名gm)。

ls | select -Property Name | gm

因此,要将对象展开为您正在查看的属性类型,您可以执行以下操作:

ls | select -ExpandProperty Name

在你的case,你可以只做下面的一个变量是一个字符串数组,其中的字符串是Name属性:

$objects = ls | select -ExpandProperty Name

转载注明原文:在PowerShell中的数组的所有对象上选择一个属性的值 - 代码日志