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.