Compartilhar via


ConvertFrom-StringData

Converte uma cadeia de caracteres que contém um ou mais pares de chave/valor em uma tabela de hash.

Sintaxe

ConvertFrom-StringData
                [-StringData] <String>
                [[-Delimiter] <Char>]
                [<CommonParameters>]

Description

O ConvertFrom-StringData cmdlet converte uma cadeia de caracteres que contém um ou mais pares de chave e valor em uma tabela de hash. Como cada par de valores-chave deve estar em uma linha separada, as cadeias de caracteres aqui são frequentemente usadas como formato de entrada. Por padrão, a chave deve ser separada do valor por um caractere de sinal de igual (=).

O ConvertFrom-StringData cmdlet é considerado um cmdlet seguro que pode ser usado na seção DATA de um script ou função. Quando usado em uma seção DATA , o conteúdo da cadeia de caracteres deve estar em conformidade com as regras de uma seção DATA . Para obter mais informações, consulte about_Data_Sections.

ConvertFrom-StringData Suporta sequências de caracteres de escape permitidas por ferramentas convencionais de tradução automática. Ou seja, o cmdlet pode interpretar barras invertidas (\) como caracteres de escape nos dados de cadeia de caracteres usando o método Regex.Unescape, em vez do caractere de acento grave do PowerShell (`) que normalmente sinalizaria o fim de uma linha em um script. Dentro da cadeia de caracteres here, o caractere de acento grave não funciona. Você também pode preservar uma barra invertida literal em seus resultados, escapando-a com uma barra invertida anterior, como esta: \\. Caracteres de barra invertida sem escape, como aqueles que geralmente são usados em caminhos de arquivo, podem ser processados como sequências de escape ilegais em seus resultados.

O PowerShell 7 adiciona o parâmetro Delimiter .

Exemplos

Exemplo 1: Converter uma cadeia de caracteres aqui entre aspas simples em uma tabela de hash

Este exemplo converte uma cadeia de caracteres aqui entre aspas simples de mensagens do usuário em uma tabela de hash. Em uma cadeia de caracteres entre aspas simples, os valores não são substituídos por variáveis e as expressões não são avaliadas. O ConvertFrom-StringData cmdlet converte o valor na $Here variável em uma tabela de hash.

$Here = @'
Msg1 = The string parameter is required.
Msg2 = Credentials are required for this command.
Msg3 = The specified variable does not exist.
'@
ConvertFrom-StringData -StringData $Here

Name                           Value
----                           -----
Msg3                           The specified variable does not exist.
Msg2                           Credentials are required for this command.
Msg1                           The string parameter is required.

Exemplo 2: Converter dados de cadeia de caracteres usando um delimitador diferente

Este exemplo mostra como converter dados de cadeia de caracteres que usam um caractere diferente como delimitador. Neste exemplo, os dados da cadeia de caracteres estão usando o caractere de barra vertical (|) como delimitador.

$StringData = @'
color|red
model|coupe
year|1965
condition|mint
'@
$carData = ConvertFrom-StringData -StringData $StringData -Delimiter '|'
$carData

Name                           Value
----                           -----
condition                      mint
model                          coupe
color                          red
year                           1965

Exemplo 3: Converter uma cadeia de caracteres aqui contendo um comentário

Este exemplo converte uma cadeia de caracteres aqui que contém um comentário e vários pares de chave-valor em uma tabela de hash.

ConvertFrom-StringData -StringData @'
Name = Disks.ps1

# Category is optional.

Category = Storage
Cost = Free
'@

Name                           Value
----                           -----
Cost                           Free
Category                       Storage
Name                           Disks.ps1

O valor do parâmetro StringData é uma cadeia de caracteres aqui, em vez de uma variável que contém uma cadeia de caracteres aqui. Qualquer um dos dois formatos é válido. A cadeia de caracteres here inclui um comentário sobre uma das cadeias de caracteres. ConvertFrom-StringData ignora comentários de linha única, mas o # caractere deve ser o primeiro caractere que não seja de espaço em branco na linha. Todos os caracteres na linha após o # são ignorados.

Exemplo 4: Converter uma cadeia de caracteres em uma tabela de hash

Este exemplo converte uma string regular entre aspas duplas (não uma string here) em uma tabela de hash e a salva na $A variável.

$A = ConvertFrom-StringData -StringData "Top = Red `n Bottom = Blue"
$A

Name             Value
----             -----
Bottom           Blue
Top              Red

Para atender à condição de que cada par de chave-valor deve estar em uma linha separada, a cadeia de caracteres usa o caractere de nova linha do PowerShell (`n) para separar os pares.

Exemplo 5: Usar ConvertFrom-StringData na seção DATA de um script

Este exemplo mostra um ConvertFrom-StringData comando usado na seção DATA de um script. As instruções abaixo da seção DATA exibem o texto para o usuário.

$TextMsgs = DATA {
ConvertFrom-StringData @'
Text001 = The $Notebook variable contains the name of the user's system notebook.
Text002 = The $MyNotebook variable contains the name of the user's private notebook.
'@
}
$TextMsgs

Name             Value
----             -----
Text001          The $Notebook variable contains the name of the user's system notebook.
Text002          The $MyNotebook variable contains the name of the user's private notebook.

Já que o texto inclui nomes de variáveis, ele deve ser colocado em uma cadeia de caracteres entre aspas simples, de modo que as variáveis sejam interpretadas literalmente e não expandidas. Variáveis não são permitidas na seção DADOS .

Exemplo 6: Usar o operador de pipeline para passar uma cadeia de caracteres

Este exemplo mostra que você pode usar um operador de pipeline (|) para enviar uma cadeia de caracteres para ConvertFrom-StringData. O valor da $Here variável é canalizado e ConvertFrom-StringData o resultado na $Hash variável.

$Here = @'
Msg1 = The string parameter is required.
Msg2 = Credentials are required for this command.
Msg3 = The specified variable does not exist.
'@
$Hash = $Here | ConvertFrom-StringData
$Hash

Name     Value
----     -----
Msg3     The specified variable does not exist.
Msg2     Credentials are required for this command.
Msg1     The string parameter is required.

Exemplo 7: Usar caracteres de escape para adicionar novas linhas e retornar caracteres

Este exemplo mostra o uso de caracteres de escape para criar novas linhas e retornar caracteres nos dados de origem. A sequência \n de escape é usada para criar novas linhas dentro de um bloco de texto associado a um nome ou item na tabela de hash resultante.

ConvertFrom-StringData @"
Vincentio = Heaven doth with us as we with torches do,\nNot light them for themselves; for if our virtues\nDid not go forth of us, 'twere all alike\nAs if we had them not.
Angelo = Let there be some more test made of my metal,\nBefore so noble and so great a figure\nBe stamp'd upon it.
"@ | Format-List

Name  : Angelo
Value : Let there be some more test made of my metal,
        Before so noble and so great a figure
        Be stamp'd upon it.

Name  : Vincentio
Value : Heaven doth with us as we with torches do,
        Not light them for themselves; for if our virtues
        Did not go forth of us, 'twere all alike
        As if we had them not.

Exemplo 8: usar o caractere de escape de barra invertida para renderizar corretamente um caminho de arquivo

Este exemplo mostra como usar o caractere de escape de barra invertida nos dados da cadeia de caracteres para permitir que um caminho de arquivo seja renderizado corretamente na tabela de hash resultante ConvertFrom-StringData . As duas barras invertidas garantem que os caracteres de barra invertida literal sejam processados corretamente na saída da tabela de hash.

ConvertFrom-StringData "Message=Look in c:\\Windows\\System32"

Name                           Value
----                           -----
Message                        Look in c:\Windows\System32

Parâmetros

-Delimiter

O caractere usado para separar a chave dos dados de valor na cadeia de caracteres que está sendo convertida. O delimitador padrão é o caractere de sinal de igual (=). Esse parâmetro foi adicionado no PowerShell 7.

Tipo:Char
Cargo:1
Valor padrão:'='
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

-StringData

Especifica a cadeia de caracteres a ser convertida. Você pode usar esse parâmetro ou canalizar uma string para ConvertFrom-StringData. O nome do parâmetro é opcional.

O valor desse parâmetro deve ser uma cadeia de caracteres que contenha um ou mais pares de valores-chave. Cada par de valores-chave deve estar em uma linha separada ou cada par deve ser separado por caracteres de nova linha (`n).

Você pode incluir comentários na cadeia de caracteres, mas os comentários não podem estar na mesma linha que um par chave-valor. ConvertFrom-StringData ignora comentários de uma linha. O # caractere deve ser o primeiro caractere que não seja de espaço em branco na linha. Todos os caracteres na linha após o # são ignorados. Os comentários não são incluídos na tabela de hash.

Uma cadeia de caracteres aqui é uma cadeia de caracteres que consiste em uma ou mais linhas. As aspas dentro da cadeia de caracteres aqui são interpretadas literalmente como parte dos dados da cadeia de caracteres. Para obter mais informações, consulte about_Quoting_Rules.

Tipo:String
Cargo:0
Valor padrão:None
Obrigatório:True
Aceitar a entrada de pipeline:True
Aceitar caracteres curinga:False

Entradas

String

Você pode canalizar uma cadeia de caracteres contendo um par chave-valor para esse cmdlet.

Saídas

Hashtable

Esse cmdlet retorna uma tabela de hash que ele cria a partir dos pares chave-valor.

Observações

Uma cadeia de caracteres here é uma cadeia de caracteres com uma ou mais linhas, nas quais as aspas são interpretadas literalmente.

Esse cmdlet pode ser útil em scripts que exibem mensagens do usuário em vários idiomas falados. Você pode usar as tabelas de hash em estilo de dicionário para isolar as cadeias de caracteres de texto do código como ocorre em arquivos de recursos, além de formatar as cadeias de caracteres de texto para uso em ferramentas de tradução.