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, Elsee ElseIf instruções

  • As seguintes variáveis automáticas: $PsCulture, $PsUICulture, , $True, $Falsee $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-XMLque 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 $TextMsgsde 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
}

Consulte Também

about_Automatic_Variables

about_Comparison_Operators

about_Hash_Tables

about_If

about_Operators

about_Quoting_Rules

about_Script_Internationalization

ConvertFrom-StringData

Import-LocalizedData