【问题标题】:How to create arrays of hashtable in powershell?如何在powershell中创建哈希表数组?
【发布时间】:2021-02-15 23:56:06
【问题描述】:

我有一个具有以下结构的哈希表,

$podhashtable = @{2 = '1','2' ; 3 = '3','4','5' ; 1 = '6'}

这是我如何实现上述哈希表的代码,

$podnumbers = @(2,3,1)
$podInfo = @()
$podhashtable = [ordered]@{}
$buff = 0
foreach ($pd in $podnumbers) {
    #$podInfo = @()
    for($i=0;$i -lt $pd;$i = $i+1) {
    $pod = Read-Host -Prompt "Assign the pod numbers for",$esxarray[$buff]
    $podinfo += $pod
    }

$podInfoOb = New-Object PSObject –Property $podsets
$podsets = @{$pd = $podInfo}
$podhashtable += $podsets
$buff = $buff + 1
}
Write-Output $podhashtable 

我正在尝试创建如下所示的哈希表数组,

$podhashtable = @{2 = '1','2'}, @{3 = '3','4','5'}, @{1 = '6'}

获取上述哈希表数组的最佳方法是什么?

【问题讨论】:

    标签: arrays powershell hashtable


    【解决方案1】:

    这个问题显然是指:How to add same keys with different values to a hashtable in powershell?

    我猜你想这样做:

    $buff = 0
    $podnumbers = @(2,3,1,2)
    $podhashtable = foreach ($pd in $podnumbers) {
        $podInfo = @{}
        for($i=0; $i -lt $pd; $i = $i+1) {
            $pod = Read-Host -Prompt "Assign the pod numbers for" # , $esxarray[$buff]
            $podinfo[$i] = $pod
            # $podInfoOb = New-Object PSObject –Property $podsets
            $podInfo
            $buff = $buff + 1
        }
    }
    Write-Output $podhashtable
    

    但我不能确定,因为您没有提供 MCVE(请下次提供;例如:定义 $esxarray 或不填写)。

    【讨论】:

    • 实际上是的,但是根据您引用的问题不满足我的目标,因为哈希表不允许重复键。虽然使用哈希表数组,所以我可以添加具有不同值的重复键
    • 我不确定我是否理解问题仍然存在。我在(更新的)答案中添加了一个重复键($podnumbers = @(2,3,1,2)),该答案基于2. or you might create a list (array) of hash tables
    • 我已经尝试过你的方法,它允许添加重复键,但它将重复键的值合并在一起,我希望添加具有不同值的重复键并独立表示键
    • 您可以通过将$podInfo(和$buff = $buff + 1)放在for 循环中来实现。 (我已经相应地更新了答案)。
    猜你喜欢
    • 2018-01-26
    • 1970-01-01
    • 1970-01-01
    • 2011-04-20
    • 1970-01-01
    • 1970-01-01
    • 2021-06-29
    • 1970-01-01
    • 2018-08-18
    相关资源
    最近更新 更多