ConvertFrom-String
Extrai e analisa 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 ConvertFrom-String
cmdlet 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, em seguida, atribui nomes de propriedade a cada um dos elementos de divisão resultantes. Você pode fornecer esses nomes de propriedade; caso contrário, eles serã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 aspas ou o escape do delimitador como o Import-Csv
cmdlet.
O conjunto de parâmetros alternativos do cmdlet, TemplateParsing, gera elementos dos grupos que são 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 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 ConvertFrom-String
resultados para um dos Format-*
cmdlets ou pode usar o parâmetro Delimiter .
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
"Hello World" | ConvertFrom-String
P1 P2
-- --
Hello World
Este comando gera um objeto com nomes de propriedade padrão, P1 e P2.
Exemplo 1A: Conheça o objeto gerado
Este comando gera um objeto com as 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 Get-Content
cmdlet armazena o conteúdo de um arquivo hosts do Windows no $content
. O segundo comando remove todos os comentários no início do arquivo 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 tem ConvertFrom-String
três propriedades:
- Nome
- Telefone
- age
$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 amostra. Se a linha corresponder aos exemplos dados 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:
6
12
Isso implica que os telefones como (206) 987 4321
não serão reconhecidos, porque não há dados de amostra que correspondam a esse padrão porque não há hífens.
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 Get-Member
cmdlet é usado para mostrar que a propriedade age é 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]
.
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 aos quais atribuir valores de divisão 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 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 PowerShell ignorará os nomes de propriedade extras. Se você não especificar nomes de propriedade suficientes para nomear todos os campos, o PowerShell atribuirá automaticamente nomes de propriedade numéricos a todas as propriedades que não são 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>:<example-value>}
.
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 são colocados entre colchetes, conforme mostrado abaixo. 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 a extração de várias propriedades em um único registro.
{nome*:D ávido mastigar} {Cidade:Redmond}, {Estado:WA} {Nome*:Evan Narvaez} {Nome*:Antonio Moreno} {Cidade:Issaquah}, {Estado: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 do algoritmo mais rápido. Para usar esse parâmetro, você também deve especificar um arquivo de modelo com o parâmetro TemplateFile .
Tipo: | SwitchParameter |
Aliases: | UT |
Cargo: | Named |
Valor padrão: | None |
Obrigatório: | False |
Aceitar a entrada de pipeline: | False |
Aceitar caracteres curinga: | False |
Entradas
Saídas
Observações
O Windows PowerShell inclui os seguintes aliases para ConvertFrom-String
:
CFS