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
yelseif
Las siguientes variables automáticas:
$PSCulture
,$PSUICulture
,$true
,$false
y$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 elConvertFrom-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
}