Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Nota editorial
Importante
La Especificación del lenguaje de Windows PowerShell 3.0 se publicó en diciembre de 2012 y se basa en Windows PowerShell 3.0. Esta especificación no refleja el estado actual de PowerShell. No hay ningún plan para actualizar esta documentación para reflejar el estado actual. Esta documentación se presenta aquí para obtener referencia histórica.
El documento de especificación está disponible como un documento de Microsoft Word del Centro de descarga de Microsoft en: https://www.microsoft.com/download/details.aspx?id=36389 Ese documento de Word se ha convertido para su presentación aquí en Microsoft Learn. Durante la conversión, se han realizado algunos cambios editoriales para dar cabida al formato de la plataforma Docs. Se han corregido algunos errores tipográficos y menores.
Sintaxis:
Sugerencia
La notación ~opt~
en las definiciones de sintaxis indica que la entidad léxica es opcional en la sintaxis.
hash-literal-expression:
@{ new-lines~opt~ hash-literal-body~opt~ new-lines~opt~ }
hash-literal-body:
hash-entry
hash-literal-body statement-terminators hash-entry
hash-entry:
key-expression = new-lines~opt~ statement
key-expression:
simple-name
unary-expression
statement-terminator:
;
new-line-character
10.1 Introducción
El tipo Hashtable representa una colección de objetos pares clave/valor que admiten la recuperación eficaz de un valor cuando se indexa por la clave. Cada par clave-valor es un elemento , que se almacena en algún tipo de objeto definido por la implementación.
La clave de un elemento no puede ser el valor NULL. No hay restricciones en el tipo de clave o valor. No se admiten claves duplicadas.
Dado un objeto de par clave-valor, la clave y el valor asociado se pueden obtener mediante las propiedades de instancia Key y Value, respectivamente.
Dada una o varias claves, se puede acceder a los valores correspondientes a través del operador de subíndice Hashtable []
(§7.1.4.3).
Todas las tablas hash son de tipo Hashtable
(§4.3.3).
El orden de las claves de la colección devuelta por Keys no se especifica; sin embargo, es el mismo orden que los valores asociados de la colección devueltas por Values.
Estos son algunos ejemplos que implican tablas hash:
$h1 = @{ FirstName = "James"; LastName = "Anderson"; IDNum = 123 }
$h1.FirstName # designates the key FirstName
$h1["LastName"] # designates the associated value for key LastName
$h1.Keys # gets the collection of keys
los elementos Hashtable
se almacenan en un objeto de tipo DictionaryEntryy las colecciones devueltas por Keys y Values tienen tipo ICollection.
Creación de tabla hash 10.2
Un elemento Hashtable
se crea mediante un literal hash (sección 7.1.9) o el cmdlet New-Object. Se puede crear con cero o más elementos. La propiedad Count devuelve el número actual de elementos.
10.3 Adición y eliminación de elementos Hashtable
Un elemento se puede agregar a un Hashtable
asignando (§7.11.1) un valor a un nombre de clave no existente o a un subíndice (§7.1.4.3) que usa un nombre de clave no existente. La eliminación de un elemento requiere el uso del método Remove. Por ejemplo
$h1 = @{ FirstName = "James"; LastName = "Anderson"; IDNum = 123 }
$h1.Dept = "Finance" # adds element Finance
$h1["Salaried"] = $false # adds element Salaried
$h1.Remove("Salaried") # removes element Salaried
10.4 Concatenación de tabla hash
Las tablas hash se pueden concatenar a través de los operadores +
y +=
, que dan lugar a la creación de un nuevo Hashtable
. Las tablas hash existentes no se modifican. Consulte §7.7.4 para obtener más información.
10.5 Tablas hash como tipos de referencia
Como Hashtable
es un tipo de referencia, la asignación de un Hashtable
implica una copia superficial; es decir, la variable asignada a hace referencia al mismo Hashtable
; no se realiza ninguna copia del Hashtable
. Por ejemplo
$h1 = @{ FirstName = "James"; LastName = "Anderson"; IDNum = 123 }
$h2 = $h1
$h1.FirstName = "John" # change key's value in $h1
$h2.FirstName # change is reflected in $h2
10.6 Enumeración sobre una tabla hash
Para procesar cada par de un elemento Hashtable
, use la propiedad Keys para recuperar la lista de claves como una matriz y, después, enumere en los elementos de esa matriz obteniendo el valor asociado mediante la propiedad Value o un subíndice, como se muestra a continuación.
$h1 = @{ FirstName = "James"; LastName = "Anderson"; IDNum = 123}
foreach ($e in $h1.Keys) {
"Key is " + $e + ", Value is " + $h1[$e]
}