Sobre seções de dados
Descrição breve
Explica seções de dados, que isolam cadeias de caracteres de texto e outros dados somente leitura da lógica de script.
Descrição longa
Os scripts projetados para o PowerShell podem ter uma ou mais seções de dados que contêm apenas dados. Você pode incluir uma ou mais seções de dados em qualquer script, função ou função avançada. O conteúdo da seção Dados é restrito a um subconjunto especificado da linguagem de script do PowerShell.
Separar dados da lógica de código facilita a identificação e o gerenciamento de dados e lógica. Ele permite que você tenha arquivos de recursos de cadeia de caracteres separados para texto, como mensagens de erro e cadeias de caracteres de Ajuda. Ele também isola a lógica de código, o que facilita testes de segurança e validação.
No PowerShell, a seção Dados é usada para dar suporte à internacionalização de script. Você pode usar seções de dados para facilitar o isolamento, a localização e o processo de cadeias de caracteres que serão convertidas em muitas linguagens de interface do usuário.
A seção Dados é um recurso do PowerShell 2.0. Scripts com seções de dados não serão executados no PowerShell 1.0 sem revisão.
Syntax
A sintaxe de uma seção Dados é a seguinte:
DATA [<variable-name>] [-supportedCommand <cmdlet-name>] {
<Permitted content>
}
A palavra-chave Data é necessária. Não diferencia maiúsculas de minúsculas. O conteúdo permitido é limitado aos seguintes elementos:
Todos os operadores do PowerShell, exceto
-match
If
,Else
eElseIf
instruçõesAs seguintes variáveis automáticas:
$PsCulture
,$PsUICulture
, ,$True
,$False
e$Null
Comentários
Pipelines
Instruções separadas por ponto e vírgula (
;
)Literais, como o seguinte:
a 1 1,2,3 "PowerShell 2.0" @( "red", "green", "blue" ) @{ a = 0x1; b = "great"; c ="script" } [XML] @' <p> Hello, World </p> '@
Cmdlets permitidos em uma seção Dados. Por padrão, somente o
ConvertFrom-StringData
cmdlet é permitido.Cmdlets que você permite em uma seção Dados usando o
-SupportedCommand
parâmetro.
Ao usar o ConvertFrom-StringData
cmdlet em uma seção De dados, você pode colocar os pares chave-valor em cadeias de caracteres de aspas simples ou de aspas duplas ou em cadeias de caracteres aqui de aspas simples ou duplas. No entanto, cadeias de caracteres que contêm variáveis e subexpressões devem ser colocadas entre cadeias de caracteres de aspas simples ou em cadeias de caracteres aqui entre aspas para que as variáveis não sejam expandidas e as subexpressãos não sejam executáveis.
-SupportedCommand
O -SupportedCommand
parâmetro permite que você indique que um cmdlet ou função gera apenas dados. Ele foi projetado para permitir que os usuários incluam cmdlets e funções em uma seção de dados que eles escreveram ou testaram.
O valor -SupportedCommand
é uma lista separada por vírgulas de um ou mais nomes de cmdlet ou função.
Por exemplo, a seção de dados a seguir inclui um cmdlet escrito pelo usuário, Format-XML
que formata dados em um arquivo XML:
DATA -supportedCommand Format-Xml
{
Format-Xml -Strings string1, string2, string3
}
Usando uma seção de dados
Para usar o conteúdo de uma seção Dados, atribua-o a uma variável e use a notação variável para acessar o conteúdo.
Por exemplo, a seção de dados a seguir contém um ConvertFrom-StringData
comando que converte a cadeia de caracteres aqui em uma tabela de hash. A tabela de hash é atribuída à $TextMsgs
variável.
A $TextMsgs
variável não faz parte da seção de dados.
$TextMsgs = DATA {
ConvertFrom-StringData -StringData @'
Text001 = Windows 7
Text002 = Windows Server 2008 R2
'@
}
Para acessar as chaves e os valores na tabela $TextMsgs
de hash, use os comandos a seguir.
$TextMsgs.Text001
$TextMsgs.Text002
Como alternativa, você pode colocar o nome da variável na definição da seção Dados. Por exemplo:
DATA TextMsgs {
ConvertFrom-StringData -StringData @'
Text001 = Windows 7
Text002 = Windows Server 2008 R2
'@
}
$TextMsgs
O resultado é o mesmo que o exemplo anterior.
Name Value
---- -----
Text001 Windows 7
Text002 Windows Server 2008 R2
Exemplos
Cadeias de dados simples.
DATA {
"Thank you for using my PowerShell Organize.pst script."
"It is provided free of charge to the community."
"I appreciate your comments and feedback."
}
Cadeias de caracteres que incluem variáveis permitidas.
DATA {
if ($null) {
"To get help for this cmdlet, type get-help new-dictionary."
}
}
Uma cadeia de caracteres aqui com aspas simples que usa o ConvertFrom-StringData
cmdlet:
DATA {
ConvertFrom-StringData -stringdata @'
Text001 = Windows 7
Text002 = Windows Server 2008 R2
'@
}
Uma cadeia de caracteres aqui com aspas duplas que usa o ConvertFrom-StringData
cmdlet:
DATA {
ConvertFrom-StringData -stringdata @"
Msg1 = To start, press any key.
Msg2 = To exit, type "quit".
"@
}
Uma seção de dados que inclui um cmdlet escrito pelo usuário que gera dados:
DATA -supportedCommand Format-XML {
Format-Xml -strings string1, string2, string3
}