TEMA
    about_Hash_Tables

DESCRIPCIÓN BREVE
    Describe cómo se crean, utilizan y ordenan las tablas hash en Windows 
    PowerShell.


DESCRIPCIÓN DETALLADA
    Una tabla hash, también denominada diccionario o matriz 
    asociativa, es una estructura de datos compacta que almacena uno 
    o más pares de nombre/valor. Por ejemplo, una tabla hash podría 
    contener una serie de nombres e identificadores de empleados, los 
    nombres de los equipos y sus direcciones IP, o los identificadores
    de los mensajes y sus textos respectivos.
 

    Las tablas hash se utilizan con frecuencia porque son muy 
    eficaces para buscar y recuperar datos. Las tablas hash se pueden 
    utilizar para almacenar listas y crear propiedades calculadas en 
    Windows PowerShell. Además, Windows PowerShell posee un cmdlet, 
    ConvertFrom-StringData, que convierte las cadenas en una tabla hash.


  Crear tablas hash
      Los elementos de una tabla hash se organizan en pares de 
      nombre/valor, como:


          Msg1="Por favor, escriba su contraseña."
          Msg2="El parámetro path es obligatorio." 
          Msg3="El alias de Get-Command es gcm." 


      Los valores se asignan o asocian a los nombres, de tal forma 
      que, cuando se envía el nombre, Windows PowerShell devuelve el 
      valor.


      En Windows PowerShell, la sintaxis de una tabla hash es la siguiente:

 
          @{ <nombre> = <valor>; [<nombre> = <valor> ] ...}


      Al crear una tabla hash, deben seguirse estas instrucciones:


          - La tabla hash debe comenzar por un símbolo de arroba (@).

          - La tabla hash debe ir entre llaves ({}).

          - Deben escribirse uno o varios pares de nombre-valor para el 
            contenido de la tabla hash.

          - Se utiliza el signo igual (=) para separar cada nombre de 
            su valor.

          - Se utiliza el signo de punto y coma (;) para separar los 
            pares de nombre/valor entre sí.

          - Si un nombre o valor contiene espacios, se debe indicar entre 
            comillas dobles.


      Por ejemplo, una tabla hash compuesta por los mensajes de usuario 
      anteriores, sería así:


          @{
          Msg1="Por favor, escriba su contraseña.";
          Msg2="El parámetro path es obligatorio."; 
          Msg3="El alias de Get-Command es gcm."; 
          }


      Para utilizar una tabla hash en los scripts y los comandos, se debe 
      guardar en una variable. El valor de la variable es un objeto de 
      tabla hash (System.Collections.Hashtable) y cada nombre en los pares 
      de nombre/valor es una propiedad del objeto de tabla hash.


      Los comandos siguientes guardan la tabla de mensajes de usuario 
      en una variable $a y utiliza el método del punto para mostrar 
      los valores. 


          C:\PS> $a = @{
          >> Msg1="Por favor, escriba su contraseña.";
          >> Msg2="El parámetro path es obligatorio.";
          >> Msg3="El alias de Get-Command es gcm.";
          >> }



          C:\PS> $a
          Nombre                           Valor
          ----                             -----
          Msg1                    Por favor, escriba su contraseña.
          Msg3                    El alias de Get-Command es gcm.
          Msg2                    El parámetro path es obligatorio.

          C:\PS> $a.Msg1
          Por favor, escriba su contraseña.


      Las tablas hash no se limitan a un tipo de datos. Puede 
      escribir cualquier tipo de datos en una tabla hash y también 
      combinar varios tipos de datos en una misma tabla hash. Por 
      ejemplo, puede generar una tabla hash que contenga un entero, 
      una llamada a un cmdlet y una cadena.


  Ordenar las tablas hash
      Para ordenar las tablas hash por claves o valores 
      alfabéticamente, se utiliza el método GetEnumerator de las 
      tablas hash para obtener las claves y los valores que contiene y, 
      a continuación, se utiliza el cmdlet Sort-Object para ordenarlos.


      Por ejemplo, el comando siguiente ordena la tabla hash 
      contenida en $a alfabéticamente por claves.


          C:\PS> $a.getenumerator() | sort-object -property key

          Nombre                         Valor
          ----                           -----
          Msg1                           Por favor, escriba su contraseña.
          Msg2                           El parámetro path es obligatorio.
          Msg3                           El alias de Get-Command es gcm.


      El comando siguiente utiliza el mismo método para ordenar los 
      valores hash en orden descendente.


          C:\PS> $a.getenumerator() | sort-object -property value -descending

          Nombre                         Valor
          ----                           -----
          Msg1                           Por favor, escriba su contraseña.
          Msg2                           El parámetro path es obligatorio.
          Msg3                           El alias de Get-Command es gcm.



  ConvertFrom-StringData
      El cmdlet ConvertFrom-StringData convierte una cadena o una cadena 
      multilínea intercalada en el código de pares de nombre/valor en una 
      tabla hash. El cmdlet ConvertFrom-StringData se puede utilizar sin 
      ningún riesgo en la sección de datos de un script. Además, se puede 
      usar con el cmdlet Import-LocalizedData para mostrar los mensajes de 
      usuario en la referencia cultural de la interfaz de usuario (IU) del 
      usuario actual.


      Las cadenas multilínea intercaladas en el código resultan 
      especialmente útiles cuando los valores de la tabla hash 
      incluyen comillas dobles. (Para obtener más información sobre 
      las cadenas multilínea intercaladas en el código, vea 
      about_Quoting_Rules.)


      En el ejemplo siguiente se muestra cómo crear una cadena multilínea 
      intercalada en el código compuesta de los mensajes de usuario del ejemplo 
      anterior, y cómo utilizar ConvertFrom-StringData para convertir la 
      cadena en una tabla hash.


      El comando siguiente crea una cadena multilínea intercalada en 
      el código de pares de nombre/valor y, a continuación, la guarda 
      en la variable $string.


          C:\PS> $string = @"
          Msg1="Por favor, escriba su contraseña."
          Msg2="El parámetro path es obligatorio." 
          Msg3="El alias de Get-Command es gcm." "@

   
    Este comando utiliza el cmdlet ConvertFrom-StringData para 
    convertir la cadena multilínea intercalada en el código en una 
    tabla hash.


        C:\PS> convertfrom-stringdata $string

        Nombre                         Valor
        ----                           -----
        Msg3                           "El alias de Get-Command es gcm."
        Msg2                           "El parámetro path es obligatorio."
        Msg1                           "Por favor, escriba su contraseña."


VEA TAMBIÉN
    about_Arrays
    about_Quoting_Rules
    about_Script_Internationalization 
    ConvertFrom-StringData
    Import-LocalizedData
    




Tabla de contenido