about_Data_Sections

Descripción breve

Explica las secciones Datos, que aíslan las cadenas de texto y otros datos de solo lectura de la lógica de script.

Descripción larga

Los scripts diseñados para PowerShell pueden tener una o varias secciones de datos que solo contienen datos. Puede incluir una o varias secciones de datos en cualquier script, función o función avanzada. El contenido de la sección Datos está restringido a un subconjunto especificado del lenguaje de scripting de PowerShell.

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

En PowerShell, la sección Datos se usa para admitir la internacionalización de scripts. Puede usar secciones de datos para facilitar el aislamiento, la localización y el procesamiento de cadenas que se traducirán en muchos lenguajes de interfaz de usuario (UI).

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

Sintaxis

La sintaxis de una sección Data es la siguiente:

DATA [<variable-name>] [-supportedCommand <cmdlet-name>] {
    <Permitted content>
}

Se requiere la palabra clave Data. No distingue mayúsculas de minúsculas. El contenido permitido se limita a los siguientes elementos:

  • Todos los operadores de PowerShell, excepto -match

  • Instrucciones If, Else y ElseIf

  • Las siguientes variables automáticas: $PsCulture, $PsUICulture, $True, $Falsey $Null

  • Comentarios

  • Pipelines

  • Instrucciones separadas por punto y coma (;)

  • Literales, como los siguientes:

    a
    1
    1,2,3
    "PowerShell 2.0"
    @( "red", "green", "blue" )
    @{ a = 0x1; b = "great"; c ="script" }
    [XML] @'
    <p> Hello, World </p>
    '@
    
  • Cmdlets permitidos en una sección Datos. De forma predeterminada, solo se permite el ConvertFrom-StringData cmdlet.

  • Cmdlets que permite en una sección Datos mediante el -SupportedCommand parámetro .

Cuando se usa el ConvertFrom-StringData cmdlet en una sección Datos, puede incluir los pares clave-valor en cadenas de comillas simples o dobles o entre comillas simples o con comillas simples o con comillas dobles. Sin embargo, las cadenas que contienen variables y subexpresiones deben incluirse en cadenas entre comillas únicas o en cadenas aquí entre comillas únicas para que las variables no se expandan y las subexpresiones no sean ejecutables.

-SupportedCommand

El -SupportedCommand parámetro permite indicar que un cmdlet o una función solo genera datos. Está diseñado para permitir a los usuarios incluir cmdlets y funciones en una sección de datos que han escrito o probado.

El valor de -SupportedCommand es una lista separada por comas de uno o varios nombres de cmdlet o función.

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

DATA -supportedCommand Format-Xml
{
    Format-Xml -Strings string1, string2, string3
}

Usar una sección de datos

Para usar el contenido de una sección Datos, asígnelo a una variable y use la notación de variable para acceder al contenido.

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

La $TextMsgs variable no forma parte de la sección de datos.

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

Para acceder a las claves y los valores de la tabla hash de $TextMsgs, use los siguientes comandos.

$TextMsgs.Text001
$TextMsgs.Text002

Como alternativa, puede colocar el nombre de la variable en la definición de la sección Datos. Por ejemplo:

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

$TextMsgs

El resultado es el mismo que el ejemplo anterior.

Name                           Value
----                           -----
Text001                        Windows 7
Text002                        Windows Server 2008 R2

Ejemplos

Cadenas de datos simples.

DATA {
    "Thank you for using my PowerShell Organize.pst script."
    "It is provided free of charge to the community."
    "I appreciate your comments and feedback."
}

Cadenas que incluyen variables permitidas.

DATA {
    if ($null) {
        "To get help for this cmdlet, type get-help new-dictionary."
    }
}

Cadena aquí entre comillas únicas que usa el ConvertFrom-StringData cmdlet :

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

Cadena aquí entre comillas dobles que usa el ConvertFrom-StringData cmdlet :

DATA  {
    ConvertFrom-StringData -stringdata @"
Msg1 = To start, press any key.
Msg2 = To exit, type "quit".
"@
}

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
}

Consulte también