ConvertFrom-String
Extrai e analisa propriedades estruturadas do conteúdo da cadeia de caracteres.
Sintaxe
ByDelimiter (Predefinição)
ConvertFrom-String
[-InputObject] <String>
[-Delimiter <String>]
[-PropertyNames <String[]>]
[<CommonParameters>]
TemplateParsing
ConvertFrom-String
[-InputObject] <String>
[-TemplateFile <String[]>]
[-TemplateContent <String[]>]
[-IncludeExtent]
[-UpdateTemplate]
[<CommonParameters>]
Description
O cmdlet ConvertFrom-String extrai e analisa propriedades estruturadas do conteúdo da cadeia de caracteres. Este cmdlet gera um objeto analisando texto de um fluxo de texto tradicional. Para cada cadeia de caracteres no pipeline, o cmdlet divide a entrada por um delimitador ou uma expressão de análise e, em seguida, atribui nomes de propriedade a cada um dos elementos de divisão resultantes. Você pode fornecer esses nomes de propriedade; Se você não fizer isso, eles são gerados automaticamente para você.
O conjunto de parâmetros padrão do cmdlet, ByDelimiter, é dividido exatamente no delimitador de expressão regular. Ele não executa a correspondência de cotações ou a fuga do delimitador como o cmdlet Import-Csv.
O conjunto de parâmetros alternativos do cmdlet, TemplateParsing, gera elementos dos grupos que são capturados por uma expressão regular.
Este cmdlet oferece suporte a dois modos: análise delimitada básica e análise orientada por exemplo gerada automaticamente.
A análise delimitada, por padrão, divide a entrada no espaço em branco e atribui nomes de propriedade aos grupos resultantes.
Você pode personalizar o delimitador canalizando os resultados do ConvertFrom-String
O cmdlet também oferece suporte à análise gerada automaticamente e orientada por exemplo com base no FlashExtract, trabalho de pesquisa da Microsoft Research.
Exemplos
Exemplo 1: Gerar um objeto com nomes de propriedade padrão
PS C:\> "Hello World" | ConvertFrom-String
P1 P2
-- --
Hello World
PS C:\>
Este comando gera um objeto com nomes de propriedade padrão, P1 e P2. Os resultados são P1="Olá" e P2="Mundo".
Exemplo 1A: Conheça o objeto gerado
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:\>
O comando gera um objeto com as propriedades P1, P2; Ambas as propriedades são do tipo 'string', por padrão.
Exemplo 2: Gerar um objeto com nomes de propriedade padrão usando um delimitador
PS C:\> "Hello World" | ConvertFrom-String -Delimiter "ll"
P1 P2
-- --
He o World
PS C:\>
Este comando gera um objeto com as propriedades P1="He" e P2="o World", especificando o 'll' em Hello como o delimitador.
Exemplo 3: Gerar um objeto que contém duas propriedades nomeadas
PS C:\> "Hello World" | ConvertFrom-String -PropertyNames FirstWord, SecondWord
FirstWord SecondWord
--------- ----------
Hello World
PS C:\>
Este comando gera um objeto que contém duas propriedades:
- FirstWord, com o valor "Olá"
- SecondWord, com valor "Mundo"
Exemplo 4: Use uma expressão como o valor do parâmetro TemplateContent, salve os resultados em uma variável.
$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 uma expressão como o valor do parâmetro TemplateContent. A expressão é salva em uma variável para simplificar. O Windows PowerShell entende agora que a cadeia de caracteres usada no pipeline para ConvertFrom-String tem três propriedades:
- Nome
- telefone
- idade
Cada linha na entrada é avaliada pelas correspondências da amostra; Se a linha corresponder aos exemplos fornecidos no padrão, os valores são extraídos e passados para a variável de saída definida.
Os dados de exemplo, $template, fornecem dois formatos de telefone diferentes:
- 425-123-6789
- (206) 987-4321
E, dois formatos de idade diferentes:
- 6
- 12
Isso implica que telefones como (206) 987 4321 não serão reconhecidos, porque não há dados de amostra que correspondam a esse padrão (não há hífen entre a sequência de três dígitos e a sequência de quatro dígitos). Semelhantes com 3 ou mais idades de dígitos, eles não serão reconhecidos.
Exemplo 5: Especificando tipos de dados para as propriedades geradas
$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 é o mesmo exemplo do nº 4, acima; As únicas diferenças estão na cadeia de caracteres de padrão que inclui um tipo de dados para cada propriedade desejada. Observe a diferença no alinhamento da coluna de idade entre os dois exemplos.
Exemplo 5A: Conheça o objeto gerado
$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 mostra que a idade é do tipo inteiro.
Parâmetros
-Delimiter
Especifica uma expressão regular que identifica o limite entre os elementos. Os elementos criados pela divisão tornam-se propriedades no objeto resultante. O delimitador é finalmente usado em uma chamada para System.Text.RegularExpressions.RegularExpression.Split().
Propriedades dos parâmetros
| Tipo: | String |
| Default value: | None |
| Suporta carateres universais: | False |
| NãoMostrar: | False |
| Aliases: | DEL |
Conjuntos de parâmetros
ByDelimiter
| Position: | Named |
| Obrigatório: | False |
| Valor do pipeline: | False |
| Valor do pipeline por nome de propriedade: | False |
| Valor dos restantes argumentos: | False |
-IncludeExtent
Indica que esse cmdlet inclui uma propriedade de texto de extensão que é removida por padrão.
Propriedades dos parâmetros
| Tipo: | SwitchParameter |
| Default value: | None |
| Suporta carateres universais: | False |
| NãoMostrar: | False |
| Aliases: | IE |
Conjuntos de parâmetros
TemplateParsing
| Position: | Named |
| Obrigatório: | False |
| Valor do pipeline: | False |
| Valor do pipeline por nome de propriedade: | False |
| Valor dos restantes argumentos: | False |
-InputObject
Especifica cadeias de caracteres recebidas do pipeline ou uma variável que contém um objeto de cadeia de caracteres.
Propriedades dos parâmetros
| Tipo: | String |
| Default value: | None |
| Suporta carateres universais: | False |
| NãoMostrar: | False |
Conjuntos de parâmetros
(All)
| Position: | 0 |
| Obrigatório: | True |
| Valor do pipeline: | True |
| Valor do pipeline por nome de propriedade: | False |
| Valor dos restantes argumentos: | False |
-PropertyNames
Especifica uma matriz de nomes de propriedade aos quais atribuir valores divididos no objeto resultante. Cada linha de texto dividida ou analisada gera elementos que representam valores de propriedade. Se o elemento for o resultado de um grupo de captura e esse grupo de captura for nomeado (por exemplo, (?<name>) ou (?'name') ), o nome desse grupo de captura será atribuído à propriedade.
Se você fornecer quaisquer elementos na matriz PropertyName, esses nomes serão atribuídos a propriedades que ainda não foram nomeadas.
Se você fornecer mais nomes de propriedade do que campos, o Windows PowerShell ignorará os nomes de propriedade extras. Se você não especificar nomes de propriedade suficientes para nomear todos os campos, o Windows PowerShell atribuirá automaticamente nomes de propriedades numéricas a quaisquer propriedades que não sejam nomeadas: P1, P2, etc.
Propriedades dos parâmetros
| Tipo: | String[] |
| Default value: | None |
| Suporta carateres universais: | False |
| NãoMostrar: | False |
| Aliases: | PN |
Conjuntos de parâmetros
ByDelimiter
| Position: | Named |
| Obrigatório: | False |
| Valor do pipeline: | False |
| Valor do pipeline por nome de propriedade: | False |
| Valor dos restantes argumentos: | False |
-TemplateContent
Especifica uma expressão, ou uma expressão salva como uma variável, que descreve as propriedades às quais esse cmdlet atribui cadeias de caracteres. A sintaxe de uma especificação de campo de modelo é a seguinte: {[optional-typecast]name(sequence-spec, por exemplo *):example-value}. Um exemplo é {PersonInfo*:{Name:Patti Fuller}.
Propriedades dos parâmetros
| Tipo: | String[] |
| Default value: | None |
| Suporta carateres universais: | False |
| NãoMostrar: | False |
| Aliases: | TC |
Conjuntos de parâmetros
TemplateParsing
| Position: | Named |
| Obrigatório: | False |
| Valor do pipeline: | False |
| Valor do pipeline por nome de propriedade: | False |
| Valor dos restantes argumentos: | False |
-TemplateFile
Especifica um arquivo, como uma matriz, que contém um modelo para a análise desejada da cadeia de caracteres. No arquivo de modelo, as propriedades e seus valores são colocados entre colchetes, conforme mostrado no exemplo a seguir. Se uma propriedade, como a propriedade Name e suas outras propriedades associadas, aparecer várias vezes, você poderá adicionar um asterisco (*) para indicar que isso resulta em vários registros. Isso evita extrair várias propriedades em um único registro.
{Name*:David Chew}
{City:Redmond}, {State:WA}
{Name*:Evan Narvaez} {Name*:Antonio Moreno}
{City:Issaquah}, {State:WA}
Propriedades dos parâmetros
| Tipo: | String[] |
| Default value: | None |
| Suporta carateres universais: | False |
| NãoMostrar: | False |
| Aliases: | TF |
Conjuntos de parâmetros
TemplateParsing
| Position: | Named |
| Obrigatório: | False |
| Valor do pipeline: | False |
| Valor do pipeline por nome de propriedade: | False |
| Valor dos restantes argumentos: | False |
-UpdateTemplate
Indica que esse cmdlet salva os resultados de um algoritmo de aprendizagem em um comentário no arquivo de modelo. Isso torna o processo de aprendizagem do algoritmo mais rápido. Para usar esse parâmetro, você também deve especificar um arquivo de modelo com o parâmetro TemplateFile.
Propriedades dos parâmetros
| Tipo: | SwitchParameter |
| Default value: | None |
| Suporta carateres universais: | False |
| NãoMostrar: | False |
| Aliases: | UT |
Conjuntos de parâmetros
TemplateParsing
| Position: | Named |
| Obrigatório: | False |
| Valor do pipeline: | False |
| Valor do pipeline por nome de propriedade: | False |
| Valor dos restantes argumentos: | False |
CommonParameters
Este cmdlet suporta os parâmetros comuns: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction e -WarningVariable. Para obter mais informações, consulte about_CommonParameters.