ConvertFrom-String
Extrai e analisa as propriedades estruturadas do conteúdo da cadeia de caracteres.
Sintaxe
ConvertFrom-String
[-Delimiter <String>]
[-PropertyNames <String[]>]
[-InputObject] <String>
[<CommonParameters>]
ConvertFrom-String
[-TemplateFile <String[]>]
[-TemplateContent <String[]>]
[-IncludeExtent]
[-UpdateTemplate]
[-InputObject] <String>
[<CommonParameters>]
Description
O cmdlet ConvertFrom-String extrai e analisa propriedades estruturadas do conteúdo da cadeia de caracteres. Esse cmdlet gera um objeto analisando o 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 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 serão gerados automaticamente para você.
O conjunto de parâmetros padrão do cmdlet, ByDelimiter, divide exatamente no delimitador de expressão regular. Ele não executa a correspondência de aspas ou o escape do delimitador como o cmdlet Import-Csv faz.
O conjunto de parâmetros alternativo do cmdlet, TemplateParsing, gera elementos dos grupos capturados por uma expressão regular.
Esse cmdlet dá suporte a dois modos: análise delimitada básica e análise controlada por exemplo gerada automaticamente.
A análise delimitada, por padrão, divide a entrada em espaço em branco e atribui nomes de propriedade aos grupos resultantes.
Você pode personalizar o delimitador canalizando os resultados do
O cmdlet também dá suporte à análise controlada por exemplo e gerada automaticamente 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:\>
Esse comando gera um objeto com nomes de propriedade padrão, P1 e P2. Os resultados são P1="Hello" e P2="World".
Exemplo 1A: Conhecer 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:\>
Esse comando gera um objeto com as propriedades P1="He" e P2="o World", especificando o 'll' em Hello como 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:\>
Esse comando gera um objeto que contém duas propriedades:
- firstword, com o valor "Olá"
- secondword, com o valor "World"
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:\ >
Esse 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:
- Name
- telefone
- idade
Cada linha na entrada é avaliada pelas correspondências de exemplo; se a linha corresponder aos exemplos fornecidos no padrão, os valores serã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, pois não há dados de exemplo 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). Semelhante com 3 ou mais idades de dígito, 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 que nº 4, acima; as únicas diferenças estão na cadeia de caracteres padrão que inclui um tipo de dados para cada propriedade desejada. Observe a diferença de alinhamento para a coluna de idade entre ambos os exemplos.
Exemplo 5A: Conhecer 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 é usado em uma chamada para System.Text.RegularExpressions.RegularExpression.Split().
Tipo: | String |
Aliases: | DEL |
Cargo: | Named |
Valor padrão: | None |
Obrigatório: | False |
Aceitar a entrada de pipeline: | False |
Aceitar caracteres curinga: | False |
-IncludeExtent
Indica que esse cmdlet inclui uma propriedade de texto de extensão que é removida por padrão.
Tipo: | SwitchParameter |
Aliases: | IE |
Cargo: | Named |
Valor padrão: | None |
Obrigatório: | False |
Aceitar a entrada de pipeline: | False |
Aceitar caracteres curinga: | False |
-InputObject
Especifica cadeias de caracteres recebidas do pipeline ou uma variável que contém um objeto de cadeia de caracteres.
Tipo: | String |
Cargo: | 0 |
Valor padrão: | None |
Obrigatório: | True |
Aceitar a entrada de pipeline: | True |
Aceitar caracteres curinga: | False |
-PropertyNames
Especifica uma matriz de nomes de propriedade à qual atribuir valores divididos no objeto resultante. Cada linha de texto que você divide ou analisa 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 elementos na matriz
Se você fornecer mais nomes de propriedades do que campos, o Windows PowerShell ignorará os nomes de propriedades 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.
Tipo: | String[] |
Aliases: | PN |
Cargo: | Named |
Valor padrão: | None |
Obrigatório: | False |
Aceitar a entrada de pipeline: | False |
Aceitar caracteres curinga: | 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}.
Tipo: | String[] |
Aliases: | TC |
Cargo: | Named |
Valor padrão: | None |
Obrigatório: | False |
Aceitar a entrada de pipeline: | False |
Aceitar caracteres curinga: | 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 estão entre colchetes, conforme mostrado no exemplo a seguir. Se uma propriedade, como a propriedade Name e suas outras propriedades associadas, for exibida 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*:D avid Chew}
{City:Redmond}, {State:WA}
{Name*:Evan Narvaez} {Nome*:Antonio Moreno}
{City:Issaquah}, {State:WA}
Tipo: | String[] |
Aliases: | TF |
Cargo: | Named |
Valor padrão: | None |
Obrigatório: | False |
Aceitar a entrada de pipeline: | False |
Aceitar caracteres curinga: | False |
-UpdateTemplate
Indica que esse cmdlet salva os resultados de um algoritmo de aprendizado em um comentário no arquivo de modelo.
Isso torna o processo de aprendizado de algoritmo mais rápido.
Para usar esse parâmetro, você também deve especificar um arquivo de modelo com o parâmetro
Tipo: | SwitchParameter |
Aliases: | UT |
Cargo: | Named |
Valor padrão: | None |
Obrigatório: | False |
Aceitar a entrada de pipeline: | False |
Aceitar caracteres curinga: | False |