Solución:
Está intentando crear una matriz asociativa (hash). Pruebe la siguiente secuencia de comandos
[email protected]{}
$arr["david"] = @{}
$arr["david"]["TSHIRTS"] = @{}
$arr["david"]["TSHIRTS"]["SIZE"] ="M"
$arr.david.tshirts.size
Tenga en cuenta la diferencia entre hashes y matrices
$a = @{} # hash
$a = @() # array
Las matrices solo pueden tener enteros no negativos como índices
de powershell.com:
PowerShell admite dos tipos de matrices multidimensionales: matrices dentadas y matrices multidimensionales verdaderas.
Las matrices irregulares son matrices PowerShell normales que almacenan matrices como elementos. Este es un almacenamiento muy rentable porque las dimensiones pueden ser de diferentes tamaños:
$array1 = 1,2,(1,2,3),3
$array1[0]
$array1[1]
$array1[2]
$array1[2][0]
$array1[2][1]
Las verdaderas matrices multidimensionales siempre se parecen a una matriz cuadrada. Para crear una matriz de este tipo, deberá acceder a .NET. La siguiente línea crea una matriz bidimensional con 10 y 20 elementos que se asemejan a una matriz de 10×20:
$array2 = New-Object 'object[,]' 10,20
$array2[4,8] = 'Hello'
$array2[9,16] = 'Test'
$array2
para una matriz de 3 dimensiones 10 * 20 * 10
$array3 = New-Object 'object[,,]' 10,20,10
Para ampliar lo que manojlds dijo anteriormente es que puede anidar Hashtables. Puede que no sea una verdadera matriz multidimensional, pero le dará algunas ideas sobre cómo estructurar los datos. Un ejemplo:
$hash = @{}
$computers | %{
$hash.Add(($_.Name),(@{
"Status" = ($_.Status)
"Date" = ($_.Date)
}))
}
Lo bueno de esto es que puedes hacer referencia a cosas como:
($hash."Name1").Status
Además, es mucho más rápido que las matrices para encontrar cosas. Utilizo esto para comparar datos en lugar de usar la coincidencia en matrices.
$hash.ContainsKey("Name1")
¡Espero que algo de eso ayude!
-Adán