Powershell select 唯一字段
Powershell select unique field
我有一个包含一些字段的对象列表。例如,我的列表中有三个对象:
Field1 = "aaa"
Field2 = 123
Field3 = "ccc"
Field1 = "bbb"
Field2 = 123
Field3 = "ddd"
Field1 = "eee"
Field2 = 123
Field3 = "ccc"
我需要像这样过滤这个列表:
- 我必须获取所有唯一出现的 Field2-Field3 对。 Field1 的值是不必要的。
在我的示例中,选择的结果必须删除第三个对象,因为在 Field2 和 Field3 上具有相同的值。
我试过 Select-Object -Unique Field2, Field3
但没有过滤任何东西。
我也尝试过 Where-Object
,但结果相同。
有什么想法吗?我使用的是旧版本的 powershell,所以我无法使用某些 cmdlet。
谢谢。
这是代码:它可以工作,但我还需要在我的输出中获取 Field1
$result = @{}
foreach($item in $myList) {
$combined = '{0}-{1}' -f $item.Field2, $item.Field3
if($result.ContainsKey($combined) -eq $false) {
$result[$combined] = $item
}
}
$result.Values
您可以使用表达式:
$objects | Select -Unique @{n='Combined'; e={'{0}-{1}' -f $_.Field2, $_.Field3}}
这是另一种使用散列的方法:
$result = @{}
foreach($item in $objects){
$combined = '{0}-{1}' -f $item.Field2, $item.Field3
if($result.ContainsKey($combined) -eq $false){
$result[$combined] = $item
}
}
$result.Values | Select Field1
我有一个包含一些字段的对象列表。例如,我的列表中有三个对象:
Field1 = "aaa"
Field2 = 123
Field3 = "ccc"
Field1 = "bbb"
Field2 = 123
Field3 = "ddd"
Field1 = "eee"
Field2 = 123
Field3 = "ccc"
我需要像这样过滤这个列表:
- 我必须获取所有唯一出现的 Field2-Field3 对。 Field1 的值是不必要的。
在我的示例中,选择的结果必须删除第三个对象,因为在 Field2 和 Field3 上具有相同的值。
我试过 Select-Object -Unique Field2, Field3
但没有过滤任何东西。
我也尝试过 Where-Object
,但结果相同。
有什么想法吗?我使用的是旧版本的 powershell,所以我无法使用某些 cmdlet。
谢谢。
这是代码:它可以工作,但我还需要在我的输出中获取 Field1
$result = @{}
foreach($item in $myList) {
$combined = '{0}-{1}' -f $item.Field2, $item.Field3
if($result.ContainsKey($combined) -eq $false) {
$result[$combined] = $item
}
}
$result.Values
您可以使用表达式:
$objects | Select -Unique @{n='Combined'; e={'{0}-{1}' -f $_.Field2, $_.Field3}}
这是另一种使用散列的方法:
$result = @{}
foreach($item in $objects){
$combined = '{0}-{1}' -f $item.Field2, $item.Field3
if($result.ContainsKey($combined) -eq $false){
$result[$combined] = $item
}
}
$result.Values | Select Field1