我想在这个论坛上得到专家的建议:
在Poweshell中,我有一个要求,我想在一个索引上存储两个不同的值。因为后来我想根据Powershell中的唯一索引来访问这两个值:
at index 0 = [value1,valu2]
at index 1 = [value3,valu4]
at index 2 = [value5,valu6]
依旧......
在PowerShell中可以做到的最佳方法是什么?
答案 0 :(得分:1)
数组按编号索引。值可以是任何对象(包括另一个数组)。
$a = @(
@('val1', 'val2') ,
@(1234, 5678) ,
@(321, 'val6')
)
$a[0][0] # 'val1'
$a[0][1] # 'val2'
$a[2][0] # 321
要使用.Add()
和.Remove()
方法,请考虑[hashtable]
(这个数组为数组):
$a = @{
0 = @('val1', 'val2')
1 = @(1234, 5678)
2 = @(321, 'val6')
}
$a.Add(3, @('valX','valY'))
$a[0][0] # 'val1'
$a[0][1] # 'val2'
$a[2][0] # 321
如果你想在它们上面使用方法,那么值本身也可以是哈希表。
答案 1 :(得分:1)
为了完整起见,您还可以使用自定义PowerShell对象。我使用的是briantist使用的相同样本数据集。
$a = @(
[pscustomobject]@{Index1 = 'val1';Index2 = 'val2'},
[pscustomobject]@{Index1 = '1234';Index2 = '5678'},
[pscustomobject]@{Index1 = '321';Index2 = 'val6'}
)
$a[2].Index1
321
这需要3.0但你可以轻松改变2.0
如果您已经有一个数组集合,那么您可以在循环中使用相同的逻辑
$a = @(
@('val1', 'val2') ,
@(1234, 5678) ,
@(321, 'val6')
) | ForEach-Object{
[pscustomobject]@{Index1 = $_[0];Index2 = $_[1]}
}