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, e ElseIf declarações

  • As 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
}

Consulte também