ConvertFrom-String
Extrai e analisa as propriedades estruturadas do conteúdo da cadeia de caracteres.
Sintaxe
ByDelimiter (Default)
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. 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. Para obter mais informações sobre expressões regulares, consulte about_Regular_Expressions.
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 ConvertFrom-String em um dos cmdlets Format-* ou pode usar o parâmetro delimitador de.
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
"Hello World" | ConvertFrom-String
P1 P2
-- --
Hello World
Esse comando gera um objeto com nomes de propriedade padrão, P1 e P2.
Exemplo 1A: Conhecer o objeto gerado
Esse comando gera um objeto com propriedades P1, P2; ambas as propriedades são do tipo String, por padrão.
"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
Exemplo 2: gerar um objeto com nomes de propriedade padrão usando um delimitador
Esse comando gera um objeto com um domínio e um nome de usuário usando a barra invertida (\) como delimitador. O caractere de barra invertida deve ser escapado com outra barra invertida ao usar expressões regulares.
"Contoso\Administrator" | ConvertFrom-String -Delimiter "\\"
P1 P2
-- --
Contoso Administrator
Exemplo 3: gerar um objeto que contém duas propriedades nomeadas
O exemplo a seguir cria objetos a partir de entradas de arquivo de hosts do 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
O cmdlet Get-Content armazena o conteúdo de um arquivo de hosts do Windows em $content. O segundo comando remove os comentários no início do arquivo de hosts usando uma expressão regular que corresponde a qualquer linha que não comece com (#). O último comando converte o texto restante em objetos com propriedades Server e IP.
Exemplo 4: use uma expressão como o valor do parâmetro TemplateContent, salve os resultados em uma variável.
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:
- Nome
- telefone
- idade
$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
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.
Os dados de exemplo, $template, fornecem dois formatos de telefone diferentes:
425-123-6789(206) 987-4321
Os dados de exemplo também fornecem dois formatos de idade diferentes:
612
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 porque não há hifens.
Exemplo 5: Especificando tipos de dados para as propriedades geradas
Este é o mesmo exemplo do Exemplo 4, acima. A diferença é que a cadeia de caracteres padrão inclui um tipo de dados para cada propriedade desejada.
$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
O cmdlet Get-Member é usado para mostrar que a propriedade idade é um 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 o método Split do tipo [System.Text.RegularExpressions.RegularExpression].
Propriedades do parâmetro
| Tipo: | String |
| Valor padrão: | None |
| Dá suporte a curingas: | False |
| DontShow: | False |
| Aliases: | DEL |
Conjuntos de parâmetros
ByDelimiter
| Cargo: | Named |
| Obrigatório: | False |
| Valor do pipeline: | False |
| Valor do pipeline pelo nome da propriedade: | False |
| Valor dos argumentos restantes: | False |
-IncludeExtent
Indica que esse cmdlet inclui uma propriedade de texto de extensão que é removida por padrão.
Propriedades do parâmetro
| Tipo: | SwitchParameter |
| Valor padrão: | None |
| Dá suporte a curingas: | False |
| DontShow: | False |
| Aliases: | Internet Explorer |
Conjuntos de parâmetros
TemplateParsing
| Cargo: | Named |
| Obrigatório: | False |
| Valor do pipeline: | False |
| Valor do pipeline pelo nome da propriedade: | False |
| Valor dos argumentos restantes: | False |
-InputObject
Especifica cadeias de caracteres recebidas do pipeline ou uma variável que contém um objeto de cadeia de caracteres.
Propriedades do parâmetro
| Tipo: | String |
| Valor padrão: | None |
| Dá suporte a curingas: | False |
| DontShow: | False |
Conjuntos de parâmetros
(All)
| Cargo: | 0 |
| Obrigatório: | True |
| Valor do pipeline: | True |
| Valor do pipeline pelo nome da propriedade: | False |
| Valor dos argumentos restantes: | 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 propriedade do que campos, o PowerShell ignorará os nomes de propriedades extras. Se você não especificar nomes de propriedade suficientes para nomear todos os campos, o PowerShell atribuirá automaticamente nomes de propriedades numéricas a quaisquer propriedades que não sejam nomeadas: P1, P2etc.
Propriedades do parâmetro
| Tipo: | String[] |
| Valor padrão: | None |
| Dá suporte a curingas: | False |
| DontShow: | False |
| Aliases: | PN |
Conjuntos de parâmetros
ByDelimiter
| Cargo: | Named |
| Obrigatório: | False |
| Valor do pipeline: | False |
| Valor do pipeline pelo nome da propriedade: | False |
| Valor dos argumentos restantes: | 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>:<example-value>}.
Propriedades do parâmetro
| Tipo: | String[] |
| Valor padrão: | None |
| Dá suporte a curingas: | False |
| DontShow: | False |
| Aliases: | TC |
Conjuntos de parâmetros
TemplateParsing
| Cargo: | Named |
| Obrigatório: | False |
| Valor do pipeline: | False |
| Valor do pipeline pelo nome da propriedade: | False |
| Valor dos argumentos restantes: | 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 abaixo. 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*:David Chew}
{City:Redmond}, {State:WA}
{Name*:Evan Narvaez} {Name*:Antonio Moreno}
{City:Issaquah}, {State:WA}
Propriedades do parâmetro
| Tipo: | String[] |
| Valor padrão: | None |
| Dá suporte a curingas: | False |
| DontShow: | False |
| Aliases: | TF |
Conjuntos de parâmetros
TemplateParsing
| Cargo: | Named |
| Obrigatório: | False |
| Valor do pipeline: | False |
| Valor do pipeline pelo nome da propriedade: | False |
| Valor dos argumentos restantes: | 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
Propriedades do parâmetro
| Tipo: | SwitchParameter |
| Valor padrão: | None |
| Dá suporte a curingas: | False |
| DontShow: | False |
| Aliases: | UT |
Conjuntos de parâmetros
TemplateParsing
| Cargo: | Named |
| Obrigatório: | False |
| Valor do pipeline: | False |
| Valor do pipeline pelo nome da propriedade: | False |
| Valor dos argumentos restantes: | 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.
Entradas
String
Saídas
PSCustomObject
Observações
O Windows PowerShell inclui os seguintes aliases para ConvertFrom-String:
CFS