Compartir a través de


about_Data_Sections

Descripción breve

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

Descripción larga

Los scripts diseñados para PowerShell pueden tener una o varias secciones data que solo contienen datos. Puede incluir una o varias secciones de data en cualquier script, función o función avanzada. El contenido de la sección data 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, puede usar la sección data para admitir la internacionalización de scripts. Puede usar secciones data para facilitar el aislamiento, la localización y el procesamiento de cadenas traducibles a otros idiomas.

La sección data se agregó en la característica de PowerShell 2.0.

Sintaxis

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

data [<variable-name>] [-SupportedCommand <cmdlet-name>] {
    <Permitted content>
}

Se requiere la palabra clave data. No distingue entre mayúsculas y 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>
    '@
    
  • Los cmdlets que están permitidos en una sección de data. De forma predeterminada, solo se permite el ConvertFrom-StringData cmdlet.

  • Cmdlets que usted permite dentro de una sección data mediante el parámetro -SupportedCommand.

Al usar el cmdlet ConvertFrom-StringData en una sección de data, puede incluir los pares clave-valor en cadenas de comillas simples o dobles, o en cadenas here de comillas simples o 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 parámetro SupportedCommand permite indicar que un cmdlet o función solo genera datos. Está diseñado para permitir que los usuarios incluyan cmdlets y funciones en una sección data que hayan 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 data incluye un cmdlet escrito por el usuario, Format-Xml, que da formato a los datos en un archivo XML:

data -SupportedCommand Format-Xml
{
    Format-Xml -Strings string1, string2, string3
}

Uso de una sección de data

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

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

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

$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 data. 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