Compartir a través de


ConvertFrom-StringData

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

Sintaxis

Default (valor predeterminado)

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

Description

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

El cmdlet ConvertFrom-StringData se considera un cmdlet seguro que se puede usar en la sección DATA de un script o función. Cuando se usa en una sección DATA, el contenido de la cadena debe ajustarse a las reglas de una sección DATA. Para obtener más información, consulte about_Data_Sections.

ConvertFrom-StringData admite secuencias de caracteres de escape permitidas por las herramientas convencionales de traducción automática. Es decir, el cmdlet puede interpretar barras diagonales inversas (\) como caracteres de escape en los datos de cadena mediante el método Regex.Unescape, en lugar del carácter de retroceso de Windows PowerShell (') que normalmente indicaría el final de una línea en un script. Dentro de la cadena aquí, el carácter de barra trasera no funciona. También puede conservar una barra diagonal inversa literal en los resultados escapándolo con una barra diagonal inversa anterior, como esta: \\. Los caracteres de barra diagonal inversa sin escape, como los que suelen usarse en las rutas de acceso de archivos, pueden mostrarse como secuencias de escape no válidas en los resultados.

Ejemplos

Ejemplo 1: Convertir una cadena here-string con comillas simples en una tabla hash

PS C:\> $Here = @'
Msg1 = The string parameter is required.
Msg2 = Credentials are required for this command.
Msg3 = The specified variable does not exist.
'@
PS C:\> 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.

Estos comandos convierten una cadena de mensajes de usuario entre comillas únicas en una tabla hash. En una cadena entre comillas únicas, no se sustituyen los valores de las variables y las expresiones no se evalúan.

El primer comando crea una cadena aquí y la guarda en la variable $Here.

El segundo comando usa el cmdlet ConvertFrom-StringData para convertir la cadena here en la variable $Here en una tabla hash.

Ejemplo 2: Convertir una cadena aquí entre comillas dobles en una tabla hash

PS C:\> $P = @"
ISE = Windows PowerShell Integrated Scripting Environment
"@
PS C:\> $P | Get-Member
TypeName: System.String

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

PS C:\> $Hash = ConvertFrom-StringData -StringData $P
PS C:\> $Hash | Get-Member
TypeName: System.Collections.Hashtable
Name              MemberType            Definition
----              ----------            ----------
Add               Method                System.Void Add(Object key, Object

Estos comandos muestran que ConvertFrom-StringData convierte realmente una cadena aquí en una tabla hash.

El primer comando crea una cadena aquí entre comillas dobles que incluye un par clave-valor y lo 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 la cadena here en $P en una tabla hash. El comando almacena el resultado en la variable $Hash.

El comando final 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: Convertir una cadena aquí en una tabla hash

PS C:\> ConvertFrom-StringData -StringData @'
Name = Disks.ps1

# Category is optional.

Category = Storage
Cost = Free
'@
Name                           Value
----                           -----
Cost                           Free
Category                       Storage
Name                           Disks.ps1

Este comando convierte una cadena aquí entre comillas únicas que contiene varios pares clave-valor en una tabla hash.

En este comando, el valor del parámetro StringData es una cadena aquí, en lugar de una variable que contiene una cadena aquí. Cualquiera de los formatos es válido.

La cadena de tipo "here-string" incluye un comentario sobre una de las cadenas. Los comentarios son válidos en cadenas, siempre que el comentario esté en una línea diferente de un par clave-valor.

Ejemplo 4: Conversión de una cadena en una tabla hash

PS C:\> $A = ConvertFrom-StringData -StringData "Top = Red `n Bottom = Blue"
PS C:\> "Top = " + $A.Top
Top = Red PS C:\> "Bottom = " + $A.Bottom
Bottom = Blue

En este ejemplo se convierte una cadena normal entre comillas dobles (no una cadena aquí) en una tabla hash y se guarda en la variable $A.

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

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

Ejemplo 5: Uso de ConvertFrom-StringData en la sección DATOS de un script

PS C:\> $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.
'@
}
PS C:\> $TextMsgs.Text001
The $Notebook variable contains the name of the user's system notebook. PS C:\> $TextMsgs.Text002
The $MyNotebook variable contains the name of the user's private notebook.

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

Dado que el texto incluye nombres de variable, debe incluirse en una cadena entre comillas únicas para que las variables se interpreten literalmente y no se expandan. Las variables no se permiten en la sección DATA.

Ejemplo 6: Uso del operador de canalización para pasar una cadena

PS C:\> $Here = @'
Msg1 = The string parameter is required.
Msg2 = Credentials are required for this command.
Msg3 = The specified variable does not exist.
'@
PS C:\> $Hash = $Here | ConvertFrom-StringData
PS C:\> $Hash
Name     Value
----     -----
Msg3     The specified variable does not exist.
Msg2     Credentials are required for this command.
Msg1     The string parameter is required.

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

El primer comando guarda una cadena aquí en la variable $Here. 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 comando final muestra el contenido de la variable $Hash.

Ejemplo 7: Usar caracteres de escape para agregar nuevas líneas y devolver caracteres

PS C:\> ConvertFrom-StringData @"
Vincentio = Heaven doth with us as we with torches do,\nNot light them for themselves; for if our virtues\nDid not go forth of us, 'twere all alike\nAs if we had them not.
Angelo = Let there be some more test made of my metal,\nBefore so noble and so great a figure\nBe stamp'd upon it.
"@ | Format-List
Name  : Angelo

Value : Let there be some more test made of my metal,
        Before so noble and so great a figure
        Be stamp'd upon it.

Name  : Vincentio
Value : Heaven doth with us as we with torches do,
        Not light them for themselves; for if our virtues
        Did not go forth of us, 'twere all alike
        As if we had them not.

En este ejemplo se muestra el uso de caracteres de escape para crear nuevas líneas y devolver caracteres en ConvertFrom-StringData. En este ejemplo, la secuencia de escape \n se usa para crear nuevas líneas dentro de un bloque de texto (el valor, en la tabla hash resultante) que está asociado a un nombre o elemento (el nombre, en la tabla hash resultante).

Ejemplo 8: Usar el carácter de escape de barra diagonal inversa para representar correctamente una ruta de acceso de archivo

PS C:\> ConvertFrom-StringData "Message=Look in c:\\Windows\\System32"
Name                           Value
----                           -----
Message                        Look in c:\Windows\System32

En este ejemplo se muestra cómo usar el carácter de escape de barra diagonal inversa en los datos de cadena para permitir que una ruta de acceso de archivo se represente correctamente en el ConvertFrom-StringData resultante tabla hash. La barra diagonal inversa doble garantiza que los caracteres de barra diagonal inversa literal se representen correctamente en los resultados de la tabla hash.

Parámetros

-StringData

Especifica la cadena que se va a convertir. Puede usar este parámetro o canalizar una cadena para 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 que contenga uno o varios pares clave-valor. Cada par clave-valor debe estar en una línea independiente o cada par debe estar separado por caracteres de nueva línea ('n).

Puede incluir comentarios en la cadena, pero los 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 aquí es una cadena que consta de una o varias líneas dentro de las cuales las comillas se interpretan literalmente. Para obtener más información, consulte about_Quoting_Rules.

Propiedades de parámetro

Tipo:String
Valor predeterminado:None
Admite caracteres comodín:False
DontShow:False

Conjuntos de parámetros

(All)
Posición:0
Obligatorio:True
Valor de la canalización:True
Valor de la canalización por nombre de propiedad:False
Valor de los argumentos restantes:False

CommonParameters

Este cmdlet admite los parámetros comunes: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction y -WarningVariable. Para obtener más información, vea about_CommonParameters.

Entradas

String

Puede canalizar una cadena que contenga un par clave-valor para ConvertFrom-StringData.

Salidas

Hashtable

Este cmdlet devuelve una tabla hash que crea a partir de los pares clave-valor.

Notas

  • Una cadena aquí es una cadena que consta de una o varias líneas dentro de las cuales las comillas se interpretan literalmente.

    Este cmdlet puede ser útil en scripts que muestran mensajes de usuario en varios idiomas hablados. Puede usar las tablas hash de estilo diccionario para aislar las cadenas de texto del código, como en los archivos de recursos, y para dar formato a las cadenas de texto para usarlas en las herramientas de traducción.