【发布时间】:2020-06-05 16:05:46
【问题描述】:
使用Select-Object,您可以使用-Unique 选择对象的多次出现中的第一个。您也可以只选择一些要保留的属性。但是,如果我只想检查一个属性的唯一性,过滤掉所有非唯一的属性,而不是只留下其中一个,并允许其他属性不变地通过,该怎么办?具体来说,我有一个PSCustomObjects 列表,其中一个属性是基本名称,另一个是自动生成的缩短名称。我想过滤掉短名称多次出现的元素,但所有项目的基本名称都不同。 Select-Object 似乎不适合这个任务,但是什么是?
编辑:澄清 - 这应该是结果:
> $A = [PSCustomObject]@{A = 1; B = 2}, [PSCustomObject]@{A = 2; B = 2}, [PSCustomObject]@{A = 4; B = 1}
> $A
A B
- -
1 2
2 2
4 1
> $A | Mystery-Cmdlet "B"
A B
- -
4 1
【问题讨论】:
-
您的意思是
Select-Object?Where-Object没有-Unique开关 -
是的,对不起。我现在就修。
-
可能是
$A | Group-Object -Property B | Where-Object Count -eq 1 | Select-Object -ExpandProperty Group? -
您可以使用
$a[2]查看行,使用$a.a查看特定列。这能回答你的问题吗? -
@NekoMusume ...不,为什么会这样?
标签: arrays powershell filtering unique pipeline