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. Para obter mais informações sobre expressões regulares, consulte about_Regular_Expressions.
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 para um dos cmdlets Format-* ou pode usar o parâmetro Delimitador.
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 propriedades P1, P2; ambas as propriedades são de 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
Este 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 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 Server e propriedades de IP.
Exemplo 4: Use uma expressão como o valor do parâmetro TemplateContent, salve os resultados em uma variável.
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
$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 fornecidos no padrão, os valores sã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, porque não há dados de amostra que correspondam a esse padrão porque não há hífenes.
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 de 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 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 é finalmente usado em uma chamada para o método Split do tipo [System.Text.RegularExpressions.RegularExpression].
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 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 propriedades numéricas a quaisquer propriedades que não estejam 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>:<example-value>}.
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 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 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.
Entradas
String
Saídas
PSCustomObject
Notas
O Windows PowerShell inclui os seguintes aliases para ConvertFrom-String:
CFS