我有一种在其他语言中做数组的方法:
$x = "David"
$arr = @()
$arr[$x]["TSHIRTS"]["SIZE"] = "M"
Run Code Online (Sandbox Code Playgroud)
这会产生错误.
man*_*lds 52
您正在尝试创建关联数组(哈希).尝试以下命令序列
$arr=@{}
$arr["david"] = @{}
$arr["david"]["TSHIRTS"] = @{}
$arr["david"]["TSHIRTS"]["SIZE"] ="M"
$arr.david.tshirts.size
Run Code Online (Sandbox Code Playgroud)
注意哈希和数组之间的区别
$a = @{} # hash
$a = @() # array
Run Code Online (Sandbox Code Playgroud)
数组只能将非负整数作为索引
CB.*_*CB. 28
来自powershell.com:
PowerShell支持两种类型的多维数组:锯齿状数组和真正的多维数组.
Jagged数组是普通的PowerShell数组,它将数组存储为元素.这是非常经济的存储,因为尺寸可以是不同的尺寸:
$array1 = 1,2,(1,2,3),3
$array1[0]
$array1[1]
$array1[2]
$array1[2][0]
$array1[2][1]
Run Code Online (Sandbox Code Playgroud)
真正的多维数组总是类似于方形矩阵.要创建这样的数组,您需要访问.NET.下一行创建一个二维数组,其中10和20个元素类似于10x20矩阵:
$array2 = New-Object 'object[,]' 10,20
$array2[4,8] = 'Hello'
$array2[9,16] = 'Test'
$array2
Run Code Online (Sandbox Code Playgroud)
对于3维数组10*20*10
$array3 = New-Object 'object[,,]' 10,20,10
Run Code Online (Sandbox Code Playgroud)
小智 15
为了扩展内容,manojlds,上面说的是你可以嵌套Hashtables.它可能不是一个真正的多维数组,但会为您提供有关如何构建数据的一些想法.一个例子:
$hash = @{}
$computers | %{
$hash.Add(($_.Name),(@{
"Status" = ($_.Status)
"Date" = ($_.Date)
}))
}
Run Code Online (Sandbox Code Playgroud)
这有什么好处,你可以参考如下:
($hash."Name1").Status
Run Code Online (Sandbox Code Playgroud)
此外,它比数组的查找速度要快得多.我使用它来比较数据而不是在数组中使用匹配.
$hash.ContainsKey("Name1")
Run Code Online (Sandbox Code Playgroud)
希望其中一些有帮助!
-亚当
这是一个简单的多维字符串数组。
$psarray = @(
('Line' ,'One' ),
('Line' ,'Two')
)
foreach($item in $psarray)
{
$item[0]
$item[1]
}
Run Code Online (Sandbox Code Playgroud)
输出:
Line
One
Line
Two
Run Code Online (Sandbox Code Playgroud)
知道PowerShell管理cmdlet之间的对象,使用PSCustomObjects数组更为常见:
$arr = @(
New-Object PSObject -Property @{Name = "David"; Article = "TShirt"; Size = "M"}
New-Object PSObject -Property @{Name = "Eduard"; Article = "Trouwsers"; Size = "S"}
)
Run Code Online (Sandbox Code Playgroud)
或者对于PowerShell版本3及更高版本:
$arr = @(
[PSCustomObject]@{Name = "David"; Article = "TShirt"; Size = "M"}
[PSCustomObject]@{Name = "Eduard"; Article = "Trouwsers"; Size = "S"}
)
Run Code Online (Sandbox Code Playgroud)
并选择以下内容:
$arr | Where {$_.Name -eq "David" -and $_.Article -eq "TShirt"} | Select Size
Run Code Online (Sandbox Code Playgroud)
小智 5
另一个线程在这里指出了如何在 Powershell 中添加到多维数组。我不知道是否有某种原因不使用这种方法,但它对我的目的有效。
$array = @()
$array += ,@( "1", "test1","a" )
$array += ,@( "2", "test2", "b" )
$array += ,@( "3", "test3", "c" )
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
199346 次 |
最近记录: |