首页 > 解决方案 > 如何使用 Select-Object、Where-Object 在哈希表中获取正确的值

问题描述

我有以下哈希表 $finalArray:

@{Name1=Yellow; Name2=Pallet Town; Name3=Ash; ID=12; Date=2019-07-01; DeviceID=1234} @{Name1=Blue; Name2=Pallet Town; Name3=Gary; ID=14; Date=2019-07-02; DeviceID=5678}

我正在尝试获取 ID = 12 的 Name3,它应该返回 Ash,但出现以下错误:

Select-Object $finalArray.Name3 | Where-Object $finalArray.ID -eq "12"
Where-Object : A positional parameter cannot be found that accepts argument 'System.Object[]'.

有人有任何指针/更好的评估价值的方法吗?

标签: powershell

解决方案


假设你的意思是你有一个哈希表数组(因为你的变量名意味着),首先你应该如下定义它:

$finalarray = @( 
    @{
        Name1 = 'Yellow';
        Name2 = 'Pallet Town';
        Name3 = 'Ash';
        ID = 12;
        Date = '2019-07-01';
        DeviceID = 1234
    }, @{
        Name1 = 'Blue';
        Name2 = 'Pallet Town';
        Name3 = 'Gary';
        ID = 14;
        Date = '2019-07-02';
        DeviceID = 5678
    }
)

现在您要获取哈希表的 Name3,ID = 12如下所示:

($finalarray | where ID -eq 12).Name3

笔记

如果您将 ID 定义为字符串(即 ID = "12"),那么您应该使用Where ID -eq "12"not Where ID -eq 12


推荐阅读