如何在PowerShell中创建和填充二维数组?

时间:2016-07-12 16:42:57

标签: powershell

我有一些数据:

id=@(1,2,3)
name=@('Mark','Revekka','Johan')
Height=@(190,'',178)

如何获得像表一样的数组?

1    Mark    190
2    Revekka 
3    Johan   178 

我想获得这样的信息:

$array[1].name 

并添加如下:

$array+=['Helena',168]

有可能吗?

3 个答案:

答案 0 :(得分:5)

你可以这样做:

$data = @(
    [PSCustomObject]@{
        Name = "Mark"
        Height = 190
    },
    [PSCustomObject]@{
        Name = "Revekka"
        Height = ""
    },
    [PSCustomObject]@{
        Name = "Johan"
        Height = 178
    }
)

$data[0].Name # returns Mark

#to add an item you can do

$data += [PSCustomObject]@{
    Name = "Helena"
    Height = 168
}

$data | ft -AutoSize

<# returns

Name    Height
----    ----
Mark     190
Revekka     
Johan    178
Helena   168

#>

答案 1 :(得分:2)

就像PHP版本一样,它是一本字典词典:

$id=@(1,2,3)
$name=@('Mark','Revekka','Johan')
$Height=@(190,'',178)

$data = @{}

$id | foreach {
    $data[$_] = @{
        "Name"=$name[$_-1]
        "Height"=$height[$_-1]
    }
}

$data[1].Name

然后要添加一个新ID,您需要知道下一个可用的ID,要么在别处跟踪它,要么从字典中计算它:

$nextID = ($data.Keys | sort | select -Last 1)  + 1
$data[$nextID] = @{Name='Helena'; 'Height'=168}

答案 2 :(得分:2)

这是另一个迭代每个项目并创建PSCustomObject

的示例
$id=@(1,2,3)
$name=@('Mark','Revekka','Johan')
$Height=@(190,'',178)

0 .. ($id.Count -1) | ForEach {
    [PsCustomObject]@{Id = $id[$_]; Name = $name[$_]; Height = $Height[$_];}
}

<强>输出:

Id Name    Height
-- ----    ------
 1 Mark       190
 2 Revekka       
 3 Johan      178