TEMA
    about_Data_Sections

DESCRIPCIÓN BREVE
    Explica las secciones de datos, que aíslan cadenas de texto y 
    otros datos de solo lectura de la lógica del script.


DESCRIPCIÓN DETALLADA
    Los scripts diseñados para Windows PowerShell pueden tener una o más 
    secciones de datos que solo contienen datos. Puede incluir una o más 
    secciones de datos en cualquier script, función o función avanzada. 
    El contenido de la sección de datos se limitan a un subconjunto 
    especificado del lenguaje de scripting de Windows PowerShell.

    Separar los datos de la lógica del código facilita la identificación y 
    administración tanto de la lógica como de los datos. Permite tener 
    archivos de recursos de cadena independientes para el texto, como los 
    mensajes de error y las cadenas de la Ayuda. También aísla la lógica 
    del código, lo que facilita la seguridad y las pruebas de validación. 

    En Windows PowerShell, la sección de datos se utiliza para admitir la 
    internacionalización de los scripts. Las secciones de datos se pueden 
    utilizar para facilitar el aislamiento, la localización y el 
    procesamiento de las cadenas que se vayan a traducir a varios idiomas 
    de interfaz de usuario (IU). 

    La sección de datos es una característica de Windows PowerShell 
    2.0. Los scripts con secciones de datos no se ejecutan en Windows 
    PowerShell 1.0 sin revisión.


  Sintaxis

    La sintaxis porque una sección de datos es la siguiente:

        DATA [-supportedCommand <nombre-del-cmdlet>] {

            <Contenido permitido>
        }


    Es necesario usar la palabra clave Data. No distingue entre 
    mayúsculas y minúsculas.


    El contenido permitido se limita a los elementos siguientes:

        - Todos los operadores de Windows PowerShell, excepto -match 	 

        - Las instrucciones If, Else y ElseIf
           
	- Las variables automáticas siguientes: $PsCulture, $PsUICulture, $True, 
	  $False y $Null

        - Comentarios

        - Canalizaciones

        - Instrucciones separadas por signos de punto y coma (;)

        - Literales, como el siguiente:

            a

            1
  
            1,2,3
	
            "Windows PowerShell 2.0"

            @( "rojo", "verde", "azul" )

            @{ a = 0x1; b = "magnífico"; c ="script" }

            [XML] @'
             <p> Hola mundo </p>
            '@

        - Cmdlets permitidos en la sección de datos. De forma predeterminada, 
          solamente se permite el cmdlet ConvertFrom-StringData.

        - Cmdlets que se permiten en una sección de datos mediante el 
          parámetro SupportedCommand.


    Cuando se utiliza el cmdlet ConvertFrom-StringData en una sección 
    de datos, puede incluir los pares de clave/valor en cadenas entre 
    comillas simples o dobles, o en cadenas multilínea intercaladas 
    en el código entre comillas simples o dobles. Sin embargo, las 
    cadenas que contienen variables y subexpresiones se deben incluir 
    en cadenas entre comillas simples o en cadenas multilínea 
    intercaladas en el código entre comillas simples, para que las 
    variables no se expandan y las subexpresiones no sean ejecutables. 


  SupportedCommand

      El parámetro SupportedCommand permite indicar que un cmdlet o 
      una función generan solamente datos. Se ha diseñado para permitir la 
      inclusión de cmdlets y funciones en una sección de datos escrita o 
      probada por el usuario.

      El valor de SupportedCommand es una lista de uno o más cmdlets 
      o nombres de función separados por comas.

      Por ejemplo, la sección de datos siguiente incluye un cmdlet 
      escrito por el usuario, Format-XML, que da formato a los datos de un 
      archivo XML:

	  DATA -supportedCommand Format-XML 
          {  
             Format-XML -strings string1, string2, string3 
          }
       


  Utilizar una sección de datos

      Para utilizar el contenido de una sección de datos, es preciso 
      asignarlo a una variable y utilizar la notación de variable 
      para tener acceso al contenido.

      Por ejemplo, la sección de datos siguiente contiene un comando 
      ConvertFrom-StringData que convierte la cadena multilínea intercalada 
      en el código en una tabla hash. La tabla hash se asigna a la variable 
      $TextMsgs. 

      La variable $TextMsgs no forma parte de la sección de datos.
 
          $TextMsgs = DATA {
              ConvertFrom-StringData -stringdata @' 
                Text001 = Windows 7
                Text002 = Windows Server 2008 R2 
          '@
          }
     
      Para tener acceso a las claves y los valores de una tabla hash 
      almacenada en $TextMsgs, se utilizan los comandos siguientes.

          $TextMsgs.Text001   
          $TextMsgs.Text002



EJEMPLOS

    Cadenas de datos simples.

        DATA {
            "Gracias por utilizar mi script Organize.pst de Windows 
            PowerShell". "Se proporciona gratuitamente a la comunidad." 
            "Agradezco sus observaciones y comentarios." 
        }


    Cadenas que incluyen variables permitidas.

        DATA {
            if ($null) {
	       "Si desea obtener ayuda para este cmdlet, escriba get-help 
	       new-dictionary." }
        }	
		

    Una cadena multilínea intercalada en el código entre comillas 
    simples que usa el cmdlet ConvertFrom-StringData:

        DATA {
          ConvertFrom-StringData -stringdata @' 
            Text001 = Windows 7
            Text002 = Windows Server 2008 R2
        '@
        }



    Una cadena multilínea intercalada en el código entre comillas 
    dobles que usa el cmdlet ConvertFrom-StringData:

        DATA {
          ConvertFrom-StringData -stringdata @" 
            Msg1 = Para comenzar, presione cualquier tecla.
            Msg2 = Para salir, escriba "salir".
        "@
        }



    Una sección de datos que incluye un cmdlet escrito por el usuario 
    que genera datos:

	DATA -supportedCommand Format-XML {  
           Format-XML -strings string1, string2, string3 
        }


VEA TAMBIÉN
    about_Automatic_Variables
    about_Comparison_Operators
    about_Hash_Tables
    about_If
    about_Operators
    about_Quoting_Rules
    about_Script_Internationalization
    ConvertFrom-StringData
    Import-LocalizedData




Tabla de contenido