ConvertFrom-StringData
Convierte una cadena que contiene uno o varios pares clave y valor en una tabla hash.
ConvertFrom-StringData
[-StringData] <String>
[[-Delimiter] <Char>]
[<CommonParameters>]
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. De forma predeterminada, el de clave de debe estar separado del valor por un carácter de signo igual (=
).
El cmdlet ConvertFrom-StringData
se considera un cmdlet seguro que se puede usar en la sección DATA de de un script o función. Cuando se usa en una sección de DATA, el contenido de la cadena debe cumplir las reglas de una sección de DATA de. Para obtener más información, vea 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 PowerShell (`
) que normalmente indicaría el final de una línea en un script.
Dentro de la cadena here-string, el carácter de retroceso no funciona. También puede conservar una barra diagonal inversa literal en los resultados escapándolo con una barra diagonal inversa anterior, de la siguiente manera: \\
. Los caracteres de barra diagonal inversa sin escape, como los que se usan habitualmente en las rutas de acceso de archivo, pueden representarse como secuencias de escape no válidas en los resultados.
PowerShell 7 agrega el parámetro Delimiter.
En este ejemplo se convierte una cadena de mensajes de usuario entre comillas únicas en una tabla hash. En una cadena entre comillas únicas, los valores no se sustituyen por variables y expresiones no se evalúan.
El cmdlet ConvertFrom-StringData
convierte el valor de la variable $Here
en una tabla hash.
$Here = @'
Msg1 = The string parameter is required.
Msg2 = Credentials are required for this command.
Msg3 = The specified variable doesn't exist.
'@
ConvertFrom-StringData -StringData $Here
Name Value
---- -----
Msg3 The specified variable doesn't exist.
Msg2 Credentials are required for this command.
Msg1 The string parameter is required.
En este ejemplo se muestra cómo convertir datos de cadena que usan un carácter diferente como delimitador. En este ejemplo, los datos de cadena usan el carácter de canalización (|
) como delimitador.
$StringData = @'
color|red
model|coupe
year|1965
condition|mint
'@
$carData = ConvertFrom-StringData -StringData $StringData -Delimiter '|'
$carData
Name Value
---- -----
condition mint
model coupe
color red
year 1965
En este ejemplo se convierte una cadena aquí que contiene un comentario y varios pares clave-valor en una tabla hash.
ConvertFrom-StringData -StringData @'
Name = Disks.ps1
# Category is optional.
Category = Storage
Cost = Free
'@
Name Value
---- -----
Cost Free
Category Storage
Name Disks.ps1
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 aquí incluye un comentario sobre una de las cadenas.
ConvertFrom-StringData
omite los comentarios de una sola línea, pero el carácter hash (#
) debe ser el primer carácter que no sea de espacio en blanco en la línea.
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
.
$A = ConvertFrom-StringData -StringData "Top = Red `n Bottom = Blue"
$A
Name Value
---- -----
Bottom Blue
Top Red
Para satisfacer la condición de que cada par clave-valor debe estar en una línea independiente, la cadena usa el carácter de nueva línea de PowerShell (`n
) para separar los pares.
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.
$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.
'@
}
$TextMsgs
Name Value
---- -----
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.
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
.
En este ejemplo se muestra que puede usar un operador de canalización (|
) para enviar una cadena a ConvertFrom-StringData
. El valor de la variable $Here
se canaliza a ConvertFrom-StringData
y el resultado en la variable $Hash
.
$Here = @'
Msg1 = The string parameter is required.
Msg2 = Credentials are required for this command.
Msg3 = The specified variable doesn't exist.
'@
$Hash = $Here | ConvertFrom-StringData
$Hash
Name Value
---- -----
Msg3 The specified variable doesn't exist.
Msg2 Credentials are required for this command.
Msg1 The string parameter is required.
En este ejemplo se muestra el uso de caracteres de escape para crear nuevas líneas y devolver caracteres en los datos de origen. La secuencia de escape \n
se usa para crear nuevas líneas dentro de un bloque de texto asociado a un nombre o elemento de la tabla hash resultante.
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
Didn't go forth of us, 'twere all alike
As if we had them not.
Ejemplo 8: Usar el carácter de escape de barra diagonal inversa para representar correctamente una ruta de acceso de archivo
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 la tabla hash de ConvertFrom-StringData
resultante. La barra diagonal inversa doble garantiza que los caracteres de barra diagonal inversa literal se representan correctamente en la salida de la tabla hash.
ConvertFrom-StringData "Message=Look in c:\\Windows\\System32"
Name Value
---- -----
Message Look in c:\Windows\System32
Carácter usado para separar el clave del valor de datos de la cadena que se va a convertir.
El delimitador predeterminado es el carácter de signo igual (=
). Este parámetro se agregó en PowerShell 7.
Tipo: | Char |
Posición: | 1 |
Valor predeterminado: | '=' |
Requerido: | False |
Aceptar entrada de canalización: | False |
Aceptar caracteres comodín: | False |
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 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.
ConvertFrom-StringData
omite los comentarios de una sola línea. El carácter hash (#
) debe ser el primer carácter de espacio no en blanco de la línea. Se omiten todos los caracteres de la línea después del carácter hash (#
). Los comentarios no se incluyen en la tabla hash.
Una cadena aquí es una cadena que consta de una o varias líneas. Las comillas dentro de la cadena aquí se interpretan literalmente como parte de los datos de cadena. Para obtener más información, vea about_Quoting_Rules.
Tipo: | String |
Posición: | 0 |
Valor predeterminado: | None |
Requerido: | True |
Aceptar entrada de canalización: | True |
Aceptar caracteres comodín: | False |
Puede canalizar una cadena que contiene un par clave-valor a este cmdlet.
Este cmdlet devuelve una tabla hash que crea a partir de los pares clave-valor.
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.
Comentarios de PowerShell
PowerShell es un proyecto de código abierto. Seleccione un vínculo para proporcionar comentarios: