about_Data_Sections
Breve descrição
Explica as seções 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 torna mais fácil identificar e gerenciar lógica e dados. 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 do código, o que facilita os testes de segurança e validação.
No PowerShell, a seção Dados é usada para dar suporte à internacionalização de scripts. Você pode usar as seções de dados para facilitar o isolamento, a localização e o processamento de cadeias de caracteres que serão traduzidas para muitos idiomas da interface do usuário.
A seção Dados é um recurso do PowerShell 2.0. Os scripts com seções de dados não serão executados no PowerShell 1.0 sem revisão.
Sintaxe
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 está limitado aos seguintes elementos:
Todos os operadores do PowerShell, exceto
-match
If
,Else
, eElseIf
declaraçõ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 os seguintes:
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, apenas o
ConvertFrom-StringData
cmdlet é permitido.Cmdlets que você permite em uma seção Data usando o
-SupportedCommand
parâmetro.
Ao usar o ConvertFrom-StringData
cmdlet em uma seção Dados, você pode incluir os pares chave-valor em cadeias de caracteres entre aspas simples ou duplas ou em cadeias de caracteres entre aspas simples ou duplas. No entanto, as cadeias de caracteres que contêm variáveis e subexpressões devem ser incluídas em cadeias de caracteres entre aspas simples ou em cadeias de caracteres entre aspas simples para que as variáveis não sejam expandidas e as subexpressões não sejam executáveis.
-SupportedCommand
O -SupportedCommand
parâmetro permite indicar 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 de é uma lista separada por -SupportedCommand
vírgulas de um ou mais nomes de cmdlets ou funções.
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 notação variável para acessar o conteúdo.
Por exemplo, a seguinte secção de dados contém um comando ConvertFrom-StringData
que converte a cadeia here-string numa tabela hash. A tabela hash é atribuída à variável $TextMsgs
.
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 aceder às chaves e aos valores na tabela hash em $TextMsgs
, utilize os seguintes comandos.
$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 do 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."
}
Strings que incluem variáveis permitidas.
DATA {
if ($null) {
"To get help for this cmdlet, type get-help new-dictionary."
}
}
Uma cadeia de caracteres entre aspas única que usa o ConvertFrom-StringData
cmdlet:
DATA {
ConvertFrom-StringData -stringdata @'
Text001 = Windows 7
Text002 = Windows Server 2008 R2
'@
}
Uma cadeia de caracteres entre 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
}