如何使用Select-Object,Where-Object在哈希表中获取正确的值

时间:2019-07-13 07:59:25

标签: 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}

我正在尝试获取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[]'.

有人知道任何一种更好的评估值的方法吗?

2 个答案:

答案 0 :(得分:1)

假设您的意思是您具有哈希表数组(因为变量名表示该数组),那么首先应按以下方式对其进行定义:

$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,如下所示:

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

注意

如果您将ID定义为字符串(即ID =“ 12”),则应使用Where ID -eq "12"而不是Where ID -eq 12

答案 1 :(得分:0)

不用担心,我发现我可以使用类似的东西:

($finalArray | Where-object {$_.ID -like "*12*"}).Name