Saltar al contenido

Recorriendo un hash, o usando un array en PowerShell

Anduvimos recabando en el mundo online y así regalarte la respuesta para tu duda, si continúas con alguna difcultad puedes dejar la pregunta y te contestaremos con mucho gusto.

Solución:

No se prefiere la taquigrafía para los guiones; es menos legible. El operador % se considera abreviado. Así es como se debe hacer en un script para facilitar la lectura y la reutilización:

Configuración de variables

PS> $hash = @
    a = 1
    b = 2
    c = 3

PS> $hash

Name                           Value
----                           -----
c                              3
b                              2
a                              1

Opción 1: ObtenerEnumerador()

Nota: preferencia personal; la sintaxis es más fácil de leer

El método GetEnumerator() se haría como se muestra:

foreach ($h in $hash.GetEnumerator()) 
    Write-Host "$($h.Name): $($h.Value)"

Producción:

c: 3
b: 2
a: 1

Opción 2: Claves

El método Keys se haría como se muestra:

foreach ($h in $hash.Keys) 
    Write-Host "$h: $($hash.Item($h))"

Producción:

c: 3
b: 2
a: 1

Información Adicional

Tenga cuidado al ordenar su tabla hash…

Sort-Object puede cambiarlo a un array:

PS> $hash.GetType()

IsPublic IsSerial Name                                     BaseType
-------- -------- ----                                     --------
True     True     Hashtable                                System.Object


PS> $hash = $hash.GetEnumerator() | Sort-Object Name
PS> $hash.GetType()

IsPublic IsSerial Name                                     BaseType
-------- -------- ----                                     --------
True     True     Object[]                                 System.Array

Este y otros bucles de PowerShell están disponibles en mi blog.

La respuesta de Christian funciona bien y muestra cómo puede recorrer cada elemento de la tabla hash usando el GetEnumerator método. También puede hacer un bucle usando el keys propiedad. Aquí hay un ejemplo de cómo:

$hash = @
    a = 1
    b = 2
    c = 3

$hash.Keys | %  "key = $_ , value = " + $hash.Item($_) 

Producción:

key = c , value = 3
key = a , value = 1
key = b , value = 2

También puedes hacer esto sin una variable.

@
  'foo' = 222
  'bar' = 333
  'baz' = 444
  'qux' = 555
 | % getEnumerator | % 
  $_.key
  $_.value

Si posees alguna cuestión y forma de aclarar nuestro tutorial puedes añadir un paráfrasis y con deseo lo interpretaremos.

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



Utiliza Nuestro Buscador

Deja una respuesta

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