Saltar al contenido

Matrices multidimensionales de Powershell

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

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *