PowerShell如何筛选指定组对象并展开Name属性
PowerShell筛选指定Group的Name值
我有一个名为something的对象,内容如下:
Name : name1 Group : group1 Name : name2 Group : group2 Name : name3 Group : group1
我可以通过以下命令获取所有Name值:
$something | Select -ExpandProperty "Name";
该命令返回:name1 name2 name3
请问如何仅筛选出Group为group1的Name值,使其返回name1 name3?我尝试的命令如下:
$something | Select -ExpandProperty "Name" -Where [Group -eq 'group1'];
正确解法
先筛选出符合Group条件的对象,再提取对应Name属性即可,正确命令如下:
$something | Where-Object { $_.Group -eq 'group1' } | Select-Object -ExpandProperty Name
也可以使用PowerShell支持的简写形式(只要不产生歧义):
$something | Where { $_.Group -eq 'group1' } | Select -Expand Name
错误原因说明
你之前的写法有误,Select-Object(简写为Select)并没有-Where参数。Where是Where-Object的简写,它是独立的过滤命令,需要先用来筛选目标对象集合,再对筛选后的结果提取属性。
内容的提问来源于stack exchange,提问作者wiktor
相关产品推荐
相关产品推荐

