about_Data_Sections

Descrição breve

Explica as 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 lógica e dados. Ele permite que você tenha arquivos de recurso de cadeia de caracteres separados para texto, como mensagens de erro e cadeias de caracteres da 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 seções de Dados para facilitar o isolamento, a localização e o processamento de cadeias de caracteres que serão traduzidas para vários idiomas da interface do usuário (UI).

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.

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

  • Instruções If, Else e ElseIf

  • 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, somente o ConvertFrom-StringData cmdlet é permitido.

  • Cmdlets permitidos em uma seção Dados usando o -SupportedCommand parâmetro.

Ao usar o ConvertFrom-StringData cmdlet em uma seção Dados, você pode colocar os pares chave-valor em cadeias de caracteres de aspas simples ou duplas ou em cadeias de caracteres aqui entre aspas simples ou duplas. No entanto, as cadeias de caracteres que contêm variáveis e subexpressões devem ser colocadas entre aspas simples ou 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 vírgulas de um ou mais nomes de -SupportedCommand 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 de 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 valores na tabela de hash no $TextMsgs, 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 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."
}

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 de aspas únicas que usa o ConvertFrom-StringData cmdlet:

DATA {
    ConvertFrom-StringData -stringdata @'
Text001 = Windows 7
Text002 = Windows Server 2008 R2
'@
}

Uma cadeia de caracteres aqui de 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
}

Confira também