Convierte una cadena que contiene uno o varios pares clave-valor en una tabla hash.

Sintaxis

ConvertFrom-StringData [-StringData] <string> [<CommonParameters>]

Descripción

El cmdlet ConvertFrom-StringData convierte una cadena que contiene uno o varios pares clave-valor en una tabla hash. Dado que cada par clave-valor debe estar en una línea independiente, se suelen usar cadenas multilínea intercaladas en el código como formato de entrada.

Se considera que el cmdlet ConvertFrom-StringData es un cmdlet seguro que se puede utilizar en la sección de datos de un script o una función. Cuando se utiliza en una sección de datos, el contenido de la cadena debe cumplir las reglas que se aplican a una sección de datos. Para obtener más información, vea about_Data_Sections.

Parámetros

-StringData <string>

Especifica la cadena que se va a convertir. Puede utilizar este parámetro o canalizar una cadena a ConvertFrom-StringData. El nombre del parámetro es opcional.

El valor de este parámetro debe ser una cadena entre comillas simples, una cadena entre comillas dobles o una cadena multilínea intercalada en el código que contiene uno o varios pares clave-valor. Cada par clave-valor debe estar en una línea independiente o debe estar separado mediante caracteres de nueva línea (`n).

Puede incluir comentarios en la cadena, pero esos comentarios no pueden estar en la misma línea que un par clave-valor. Los comentarios no se incluyen en la tabla hash.

Una cadena multilínea intercalada en el código es una cadena de una o varias líneas en la que se interpretan literalmente las comillas tipográficas. Para obtener más información, vea about_Quoting_Rules.

¿Requerido?

true

¿Posición?

1

Valor predeterminado

¿Aceptar canalización?

true (ByValue)

¿Aceptar caracteres comodín?

false

<CommonParameters>

Este cmdlet admite los parámetros comunes: -Verbose, -Debug, -ErrorAction, -ErrorVariable, -OutBuffer y -OutVariable. Para obtener más información, vea about_Commonparameters.

Entradas y salidas

El tipo de entrada es el tipo de los objetos que se pueden canalizar al cmdlet. El tipo devuelto es el tipo de los objetos que el cmdlet devuelve.

Entradas

System.String

Puede canalizar a ConvertFrom-StringData una cadena que contiene un par clave-valor.

Salidas

System.Collections.Hashtable

ConvertFrom-StringData devuelve una tabla hash creada a partir de los pares clave-valor.

Notas

Una cadena multilínea intercalada en el código es una cadena de una o varias líneas en la que se interpretan literalmente las comillas tipográficas. Para obtener más información, vea about_Quoting_Rules.

ConvertFrom-StringData puede ser útil en los scripts que muestran mensajes de usuario en varios idiomas. Puede utilizar tablas hash tipo diccionario para aislar las cadenas de texto del código, como en los archivos de recursos, y para dar formato a esas cadenas de texto a fin de usarlas en herramientas de traducción.

Ejemplo 1

C:\PS>$here = @'
Msg1 = The string parameter is required.
Msg2 = Credentials are required for this command.
Msg3 = The specified variable does not exist.
'@

C:\PS> convertfrom-stringdata -stringdata $here

Name                           Value
----                           -----
Msg3                           The specified variable does not exist.
Msg2                           Credentials are required for this command.
Msg1                           The string parameter is required.

Descripción
-----------
Estos comandos convierten en una tabla hash una cadena de mensajes de usuario multilínea intercalada en el código que se encuentra entre comillas simples. En una cadena entre comillas simples, no se reemplazan los valores de las variables y no se evalúan las expresiones.

El primer comando crea una cadena multilínea intercalada en el código y la guarda en la variable $here. 

El segundo comando usa el cmdlet ConvertFrom-StringData para convertir en tabla hash la cadena multilínea intercalada en el código que está almacenada en la variable $here.






Ejemplo 2

C:\PS>$p = @"
ISE = Windows PowerShell Integrated Scripting Environment
"@

C:\PS> $p | get-member

   TypeName: System.String

Name             MemberType            Definition
----             ----------            ----------
Clone            Method                System.Object Clone()
...


C:\PS> $hash = convertfrom-stringdata -stringdata $p

C:\PS> $hash | get-member

   TypeName: System.Collections.Hashtable

Name              MemberType            Definition
----              ----------            ----------
Add               Method                System.Void Add(Object key, Object
...

Descripción
-----------
Estos comandos muestran que ConvertFrom-StringData convierte efectivamente una cadena multilínea intercalada en el código en una tabla hash.

El primer comando crea una cadena multilínea intercalada en el código que se encuentra entre comillas dobles e incluye un par clave-valor y la guarda en la variable $p. 

El segundo comando usa un operador de canalización (|) para enviar la variable $p al cmdlet Get-Member. El resultado muestra que $p es una cadena (System.String).

El tercer comando usa el cmdlet ConvertFrom-StringData para convertir en una tabla hash la cadena multilínea intercalada en el código que está almacenada en la variable $p. El comando almacena el resultado en la variable $hash.

El último comando usa un operador de canalización (|) para enviar la variable $hash al cmdlet Get-Member. El resultado muestra que el contenido de la variable $hash es una tabla hash (System.Collections.Hashtable).






Ejemplo 3

C:\PS>convertfrom-stringdata -stringdata @'
   Name = Disks.ps1
   # Category is optional.
   Category = Storage
   Cost = Free
'@

Name                           Value
----                           -----
Cost                           Free
Category                       Storage
Name                           Disks.ps1

Descripción
-----------
Este comando convierte en una tabla hash una cadena multilínea intercalada en el código que se encuentra entre comillas simples y contiene varios pares clave-valor. 

En este comando, el valor del parámetro StringData es una cadena multilínea intercalada en el código en lugar de una variable que contiene este tipo de cadena. Ambos formatos son válidos.

La cadena multilínea intercalada en el código incluye un comentario sobre una de las cadenas. Los comentarios son válidos en cadenas, siempre y cuando se encuentren en una línea distinta a la del par clave-valor.






Ejemplo 4

C:\PS>$a = convertfrom-stringdata -stringdata "Top = Red `n Bottom = Blue"

C:\PS> "Top = " + $a.Top
Top = Red

C:\PS> "Bottom = " + $a.Bottom
Bottom = Blue

Descripción
-----------
En este ejemplo, se convierte una cadena normal entre comillas dobles (y no una cadena multilínea intercalada en el código) en una tabla hash, que se guarda en la variable $a.

Para que se cumpla la condición de que cada par clave-valor debe estar en una línea independiente, se usa el carácter de nueva línea (`n) de Windows PowerShell para separar los pares.

El resultado es una tabla hash de la entrada. Los comandos restantes muestran el resultado.






Ejemplo 5

C:\PS>$TextMsgs = DATA {
  ConvertFrom-StringData @'
	Text001 = The $Notebook variable contains the 	name of the user's system notebook.
	Text002 = The $MyNotebook variable contains the 	name of the user's private notebook.
'@
}

C:\PS> $TextMsgs.Text001
The $Notebook variable contains the name of the user's system notebook.


C:\PS> $TextMsgs.Text002
The $MyNotebook variable contains the name of the user's private notebook.

Descripción
-----------
En este ejemplo, se muestra un comando ConvertFrom-StringData utilizado en la sección de datos de un script. Las instrucciones debajo de la sección de datos muestran el texto al usuario.

Dado que el texto incluye nombres de variable, debe encontrarse en una cadena entre comillas simples de modo que las variables se interpreten literalmente y no se expandan. No se permite el uso de variables en la sección de datos.






Ejemplo 6

C:\PS>$here = @'
Msg1 = The string parameter is required.
Msg2 = Credentials are required for this command.
Msg3 = The specified variable does not exist.
'@

C:\PS> $hash = $here | convertfrom-stringdata 

C:\PS> $hash

Name     Value
----     -----
Msg3     The specified variable does not exist.
Msg2     Credentials are required for this command.
Msg1     The string parameter is required.

Descripción
-----------
En este ejemplo se muestra que se puede utilizar un operador de canalización (|) para enviar una cadena a ConvertFrom-StringData. 

El primer comando guarda en la variable $here una cadena multilínea intercalada en el código. El segundo comando usa un operador de canalización (|) para enviar la variable $here a ConvertFrom-StringData. El comando guarda el resultado en la variable $hash.

El último comando muestra el contenido de la variable $hash.






Vea también




Tabla de contenido