Compartir vía


ConvertFrom-String

Extrae y analiza las propiedades estructuradas del contenido de cadena.

Sintaxis

ByDelimiter (valor predeterminado)

ConvertFrom-String
    [-InputObject] <String>
    [-Delimiter <String>]
    [-PropertyNames <String[]>]
    [<CommonParameters>]

TemplateParsing

ConvertFrom-String
    [-InputObject] <String>
    [-TemplateFile <String[]>]
    [-TemplateContent <String[]>]
    [-IncludeExtent]
    [-UpdateTemplate]
    [<CommonParameters>]

Description

El cmdlet ConvertFrom-String extrae y analiza las propiedades estructuradas del contenido de la cadena. Este cmdlet genera un objeto mediante el análisis de texto de una secuencia de texto tradicional. Para cada cadena de la canalización, el cmdlet divide la entrada por un delimitador o una expresión de análisis y, a continuación, asigna nombres de propiedad a cada uno de los elementos divididos resultantes. Puede proporcionar estos nombres de propiedad; si no lo hace, se generan automáticamente.

El conjunto de parámetros predeterminado del cmdlet, ByDelimiter, se divide exactamente en el delimitador de expresiones regulares. No realiza la coincidencia de comillas ni el escape del delimitador como lo hace el cmdlet Import-Csv.

El conjunto de parámetros alternativos del cmdlet, TemplateParsing, genera elementos de los grupos capturados por una expresión regular. Para obtener más información sobre las expresiones regulares, vea about_Regular_Expressions.

Este cmdlet admite dos modos: el análisis delimitado básico y el análisis basado en ejemplo generado automáticamente.

El análisis delimitado, de forma predeterminada, divide la entrada en espacio en blanco y asigna nombres de propiedad a los grupos resultantes.

Puede personalizar el delimitador canalizando los resultados del ConvertFrom-String en uno de los cmdlets de Format-*, o bien puede usar el parámetro Delimiter.

El cmdlet también admite el análisis basado en ejemplo generado automáticamente en función de la FlashExtract, el trabajo de investigación de Microsoft Research.

Ejemplos

Ejemplo 1: Generación de un objeto con nombres de propiedad predeterminados

"Hello World" | ConvertFrom-String
P1    P2
--    --
Hello World

Este comando genera un objeto con nombres de propiedad predeterminados, P1 y P2.

Ejemplo 1A: Obtener información sobre el objeto generado

Este comando genera un objeto con propiedades P1, P2; Ambas propiedades son de tipo de string, de forma predeterminada.

"Hello World" | ConvertFrom-String | Get-Member

   TypeName: System.Management.Automation.PSCustomObject

Name        MemberType   Definition
----        ----------   ----------
Equals      Method       bool Equals(System.Object obj)
GetHashCode Method       int GetHashCode()
GetType     Method       type GetType()
ToString    Method       string ToString()
P1          NoteProperty string P1=Hello
P2          NoteProperty string P2=World

Ejemplo 2: Generación de un objeto con nombres de propiedad predeterminados mediante un delimitador

Este comando genera un objeto con un dominio y un nombre de usuario mediante la barra diagonal inversa (\) como delimitador. El carácter de barra diagonal inversa debe escape con otra barra diagonal inversa al usar expresiones regulares.

"Contoso\Administrator" | ConvertFrom-String -Delimiter "\\"
P1      P2
--      --
Contoso Administrator

Ejemplo 3: Generación de un objeto que contiene dos propiedades con nombre

En el ejemplo siguiente se crean objetos a partir de entradas de archivo de hosts de Windows.

$content = Get-Content C:\Windows\System32\drivers\etc\hosts
$content = $content -match "^[^#]"
$content | ConvertFrom-String -PropertyNames IP, Server
IP             Server
--             ------
192.168.7.10   W2012R2
192.168.7.20   W2016
192.168.7.101  WIN8
192.168.7.102  WIN10

El cmdlet Get-Content almacena el contenido de un archivo de hosts de Windows en $content. El segundo comando quita los comentarios al principio del archivo de hosts mediante una expresión regular que coincida con cualquier línea que no empiece por (#). El último comando convierte el texto restante en objetos con Server y propiedades de IP.

Ejemplo 4: Use una expresión como valor del parámetro TemplateContent y guarde los resultados en una variable.

Este comando usa una expresión como valor del parámetro TemplateContent. La expresión se guarda en una variable para simplificar. Windows PowerShell entiende ahora que la cadena que se usa en la canalización para ConvertFrom-String tiene tres propiedades:

  • Nombre
  • de teléfono
  • Edad
$template = @'
{Name*:Phoebe Cat}, {phone:425-123-6789}, {age:6}
{Name*:Lucky Shot}, {phone:(206) 987-4321}, {age:12}
'@

$testText = @'
Phoebe Cat, 425-123-6789, 6
Lucky Shot, (206) 987-4321, 12
Elephant Wise, 425-888-7766, 87
Wild Shrimp, (111)  222-3333, 1
'@

$PersonalData = $testText | ConvertFrom-String -TemplateContent $template
Write-Output ("Pet items found: " + ($PersonalData.Count))
$PersonalData
Pet items found: 4

Name          phone           age
----          -----           ---
Phoebe Cat    425-123-6789    6
Lucky Shot    (206) 987-4321  12
Elephant Wise 425-888-7766    87
Wild Shrimp   (111)  222-3333 1

El ejemplo evalúa cada línea de la entrada. Si la línea coincide con los ejemplos especificados en el patrón, los valores se extraen y se pasan a la variable de salida.

Los datos de ejemplo, $template, proporcionan dos formatos de teléfono diferentes:

  • 425-123-6789
  • (206) 987-4321

Los datos de ejemplo también proporcionan dos formatos de edad diferentes:

  • 6
  • 12

Esto implica que no se reconocerán teléfonos como (206) 987 4321, ya que no hay datos de ejemplo que coincidan con ese patrón porque no hay guiones.

Ejemplo 5: Especificar tipos de datos en las propiedades generadas

Este es el mismo ejemplo que el ejemplo 4 anterior. La diferencia es que la cadena de patrón incluye un tipo de datos para cada propiedad deseada.

$template = @'
{[string]Name*:Phoebe Cat}, {[string]phone:425-123-6789}, {[int]age:6}
{[string]Name*:Lucky Shot}, {[string]phone:(206) 987-4321}, {[int]age:12}
'@

$testText = @'
Phoebe Cat, 425-123-6789, 6
Lucky Shot, (206) 987-4321, 12
Elephant Wise, 425-888-7766, 87
Wild Shrimp, (111)  222-3333, 1
'@

$PersonalData = $testText | ConvertFrom-String -TemplateContent $template
Write-Output ("Pet items found: " + ($PersonalData.Count))
$PersonalData
Pet items found: 4

Name          phone           age
----          -----           ---
Phoebe Cat    425-123-6789      6
Lucky Shot    (206) 987-4321   12
Elephant Wise 425-888-7766     87
Wild Shrimp   (111)  222-3333   1
$PersonalData | Get-Member
   TypeName: System.Management.Automation.PSCustomObject

Name        MemberType   Definition
----        ----------   ----------
Equals      Method       bool Equals(System.Object obj)
GetHashCode Method       int GetHashCode()
GetType     Method       type GetType()
ToString    Method       string ToString()
age         NoteProperty int age=6
Name        NoteProperty string Name=Phoebe Cat
phone       NoteProperty string phone=425-123-6789

El cmdlet Get-Member se usa para mostrar que la propiedad edad es un entero.

Parámetros

-Delimiter

Especifica una expresión regular que identifica el límite entre los elementos. Los elementos creados por la división se convierten en propiedades en el objeto resultante. El delimitador se usa en última instancia en una llamada al método Split del tipo [System.Text.RegularExpressions.RegularExpression].

Propiedades de parámetro

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

Conjuntos de parámetros

ByDelimiter
Posición:Named
Obligatorio:False
Valor de la canalización:False
Valor de la canalización por nombre de propiedad:False
Valor de los argumentos restantes:False

-IncludeExtent

Indica que este cmdlet incluye una propiedad de texto de extensión que se quita de forma predeterminada.

Propiedades de parámetro

Tipo:SwitchParameter
Valor predeterminado:None
Admite caracteres comodín:False
DontShow:False
Alias:Internet Explorer

Conjuntos de parámetros

TemplateParsing
Posición:Named
Obligatorio:False
Valor de la canalización:False
Valor de la canalización por nombre de propiedad:False
Valor de los argumentos restantes:False

-InputObject

Especifica las cadenas recibidas de la canalización o una variable que contiene un objeto de cadena.

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

-PropertyNames

Especifica una matriz de nombres de propiedad a los que asignar valores divididos en el objeto resultante. Cada línea de texto que se divide o analiza genera elementos que representan valores de propiedad. Si el elemento es el resultado de un grupo de captura y ese grupo de captura se denomina (por ejemplo, (?<name>) o (?'name') ), el nombre de ese grupo de captura se asigna a la propiedad .

Si proporciona algún elemento de la matriz PropertyName, esos nombres se asignan a las propiedades que aún no se han denominado.

Si proporciona más nombres de propiedad de los que hay campos, PowerShell omite los nombres de propiedad adicionales. Si no especifica suficientes nombres de propiedad para asignar nombres a todos los campos, PowerShell asigna automáticamente nombres de propiedad numéricos a las propiedades que no tienen nombre: P1, P2, etc.

Propiedades de parámetro

Tipo:

String[]

Valor predeterminado:None
Admite caracteres comodín:False
DontShow:False
Alias:PN

Conjuntos de parámetros

ByDelimiter
Posición:Named
Obligatorio:False
Valor de la canalización:False
Valor de la canalización por nombre de propiedad:False
Valor de los argumentos restantes:False

-TemplateContent

Especifica una expresión o una expresión guardada como variable, que describe las propiedades a las que este cmdlet asigna cadenas. La sintaxis de una especificación de campo de plantilla es la siguiente: {[optional-typecast]<name>:<example-value>}.

Propiedades de parámetro

Tipo:

String[]

Valor predeterminado:None
Admite caracteres comodín:False
DontShow:False
Alias:TC

Conjuntos de parámetros

TemplateParsing
Posición:Named
Obligatorio:False
Valor de la canalización:False
Valor de la canalización por nombre de propiedad:False
Valor de los argumentos restantes:False

-TemplateFile

Especifica un archivo, como una matriz, que contiene una plantilla para el análisis deseado de la cadena. En el archivo de plantilla, las propiedades y sus valores se incluyen entre corchetes, como se muestra a continuación. Si una propiedad, como el Nombre propiedad y sus otras propiedades asociadas, aparece varias veces, puede agregar un asterisco (*) para indicar que esto da como resultado varios registros. Esto evita la extracción de varias propiedades en un único registro.

{Name*:David Chew}
{City:Redmond}, {State:WA}
{Name*:Evan Narvaez}    {Name*:Antonio Moreno}
{City:Issaquah}, {State:WA}

Propiedades de parámetro

Tipo:

String[]

Valor predeterminado:None
Admite caracteres comodín:False
DontShow:False
Alias:TF

Conjuntos de parámetros

TemplateParsing
Posición:Named
Obligatorio:False
Valor de la canalización:False
Valor de la canalización por nombre de propiedad:False
Valor de los argumentos restantes:False

-UpdateTemplate

Indica que este cmdlet guarda los resultados de un algoritmo de aprendizaje en un comentario en el archivo de plantilla. Esto hace que el proceso de aprendizaje del algoritmo sea más rápido. Para usar este parámetro, también debe especificar un archivo de plantilla con el parámetro templateFile .

Propiedades de parámetro

Tipo:SwitchParameter
Valor predeterminado:None
Admite caracteres comodín:False
DontShow:False
Alias:UT

Conjuntos de parámetros

TemplateParsing
Posición:Named
Obligatorio:False
Valor de la canalización:False
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

Salidas

PSCustomObject

Notas

Windows PowerShell incluye los siguientes alias para ConvertFrom-String:

  • CFS