ConvertFrom-StringData
Converte uma cadeia que contém um ou mais pares chaves e valores numa tabela hash.
Sintaxe
ConvertFrom-StringData
[-StringData] <String>
[[-Delimiter] <Char>]
[<CommonParameters>]
Description
O cmdlet ConvertFrom-StringData
converte uma cadeia que contém um ou mais pares chaves e valores numa tabela hash. Como cada par chave-valor deve estar em uma linha separada, as cadeias de caracteres aqui são frequentemente usadas como o 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 fuga permitidas pelas ferramentas convencionais de tradução automática. Ou seja, o cmdlet pode interpretar barras invertidas (\
) como caracteres de escape nos dados da cadeia de caracteres usando o Método Regex.Unescape, em vez do caractere de backtick do PowerShell (`
) que normalmente sinalizaria o fim de uma linha em um script.
Dentro da cadeia de caracteres here, o caractere backtick 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 são comumente usados em caminhos de arquivo, podem renderizar como sequências de escape ilegais em seus resultados.
O PowerShell 7 adiciona o parâmetro Delimiter .
Exemplos
Exemplo 1: converter uma cadeia here-string com plicas numa tabela hash
Este exemplo converte uma cadeia here-string com plicas de mensagens de utilizador numa tabela hash. Em uma cadeia de aspas simples, os valores não são substituídos por variáveis e as expressões não são avaliadas.
O cmdlet ConvertFrom-StringData
converte o valor na variável $Here
numa tabela 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 pipe (|
) 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 que contém um comentário
Este exemplo converte uma cadeia here-string que contém um comentário vários pares chave-valor numa tabela 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 here, em vez de uma variável que contém uma cadeia de caracteres here. Qualquer um dos formatos é válido. A cadeia de caracteres aqui 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 sem espaço em branco na linha. Todos os caracteres na linha após o #
são ignorados.
Exemplo 4: converter uma cadeia numa tabela hash
Este exemplo converte uma cadeia com aspas duplas normais (não uma cadeia here-string) numa tabela hash e guarda-a na variável $A
.
$A = ConvertFrom-StringData -StringData "Top = Red `n Bottom = Blue"
$A
Name Value
---- -----
Bottom Blue
Top Red
Para satisfazer a condição de que cada par 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 DADOS 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.
Como o texto inclui nomes de variáveis, ele deve ser incluído em uma cadeia de aspas simples para que as variáveis sejam interpretadas literalmente e não expandidas. As variáveis não são permitidas na secçã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 para ConvertFrom-StringData
e 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 de escape \n
é utilizada para criar novas linhas num bloco de texto que está associado a um nome ou item na tabela 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 utilizar o caráter de escape de barra invertida nos dados de cadeia para permitir que um caminho de ficheiro seja apresentado corretamente na tabela hash ConvertFrom-StringData
resultante. A barra invertida dupla garante que os carateres de barra invertida literal são apresentados corretamente na saída da tabela 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 |
Position: | 1 |
Default value: | '=' |
Necessário: | False |
Aceitar entrada de pipeline: | False |
Aceitar carateres universais: | False |
-StringData
Especifica a cadeia de caracteres a ser convertida. Você pode usar esse parâmetro ou canalizar uma cadeia de caracteres 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 chave-valor. Cada par chave-valor 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 linha única. O #
caractere deve ser o primeiro caractere sem espaço em branco na linha. Todos os caracteres na linha após o #
são ignorados. Os comentários não estão incluídos na tabela 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 |
Position: | 0 |
Default value: | None |
Necessário: | True |
Aceitar entrada de pipeline: | True |
Aceitar carateres universais: | False |
Entradas
Você pode canalizar uma cadeia de caracteres contendo um par chave-valor para este cmdlet.
Saídas
Este cmdlet devolve uma tabela hash que cria a partir dos pares chave-valor.
Notas
Uma cadeia de caracteres aqui é uma cadeia de caracteres que consiste em uma ou mais linhas dentro das 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. Pode utilizar as tabelas hash de estilo dicionário para isolar as cadeias de texto do código, como em ficheiros de recursos, e para formatar as cadeias de texto para utilização em ferramentas de tradução.