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 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.
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 el
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
PS C:\> "Hello World" | ConvertFrom-String
P1 P2
-- --
Hello World
PS C:\>
Este comando genera un objeto con nombres de propiedad predeterminados, P1 y P2. Los resultados son P1="Hello" y P2="World".
Ejemplo 1A: Obtener información sobre el objeto generado
PS C:\> "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
PS C:\>
El comando genera un objeto con las propiedades P1, P2; ambas propiedades son de tipo "string", de forma predeterminada.
Ejemplo 2: Generación de un objeto con nombres de propiedad predeterminados mediante un delimitador
PS C:\> "Hello World" | ConvertFrom-String -Delimiter "ll"
P1 P2
-- --
He o World
PS C:\>
Este comando genera un objeto con las propiedades P1="He" y P2="o World", especificando "ll" en Hello como delimitador.
Ejemplo 3: Generación de un objeto que contiene dos propiedades con nombre
PS C:\> "Hello World" | ConvertFrom-String -PropertyNames FirstWord, SecondWord
FirstWord SecondWord
--------- ----------
Hello World
PS C:\>
Este comando genera un objeto que contiene dos propiedades:
- firstWord, con el valor "Hello"
- secondWord, con el valor "World"
Ejemplo 4: Use una expresión como valor del parámetro TemplateContent y guarde los resultados en una variable.
$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
'@
$testText |
ConvertFrom-String -TemplateContent $template -OutVariable PersonalData |
Out-Null
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
C:\ >
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
Cada línea de la entrada se evalúa mediante las coincidencias de ejemplo; 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 definida.
Los datos de ejemplo, $template, proporcionan dos formatos de teléfono diferentes:
- 425-123-6789
- (206) 987-4321
Y, 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 (no hay ningún guión entre la secuencia de tres dígitos y la secuencia de cuatro dígitos). De forma similar a 3 o más edades de dígitos, no se reconocerán.
Ejemplo 5: Especificar tipos de datos en las propiedades generadas
$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
'@
$testText |
ConvertFrom-String -TemplateContent $template -OutVariable PersonalData | Out-Null
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
C:\ >
Este es el mismo ejemplo que el número 4 anterior; las únicas diferencias están en la cadena de patrón que incluye un tipo de datos para cada propiedad deseada. Observe la diferencia en la alineación de la columna age entre ambos ejemplos.
Ejemplo 5A: Conocer el objeto generado
$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
'@
$testText |
ConvertFrom-String -TemplateContent $template -OutVariable PersonalData |
Out-Null
$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
C:\ >
Get-Member muestra que la edad es de tipo 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 a System.Text.RegularExpressions.RegularExpression.Split().
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, Windows PowerShell omite los nombres de propiedad adicionales. Si no especifica suficientes nombres de propiedad para asignar nombres a todos los campos, Windows 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(sequence-spec, por ejemplo *):example-value}. Un ejemplo es {PersonInfo*:{Name:Patti Fuller}.
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 en el ejemplo siguiente. Si una propiedad, como la propiedad Name 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.