Compartilhar via


about_Data_Sections

Descrição breve

Explica as seções DATA, que isolam cadeias de texto e outros dados somente leitura da lógica do script.

Descrição longa

Os scripts projetados para o PowerShell podem ter uma ou mais seções DATA que contêm apenas dados. Você pode incluir uma ou mais seções DATA em qualquer script, função ou função avançada. O conteúdo da seção DATA é restrito a um subconjunto especificado da linguagem de script do PowerShell.

Separar dados da lógica do código facilita a identificação e o gerenciamento da lógica e dos dados. Ele permite que você tenha arquivos de recurso 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, você pode usar a seção DATA para dar suporte à internacionalização de script. Você pode usar seções DATA para facilitar o isolamento, a localização e o processamento de cadeias de caracteres que podem ser traduzidas para outros idiomas.

A seção DATA foi adicionada ao recurso do PowerShell 2.0.

Sintaxe

A sintaxe de uma seção DATA é a seguinte:

DATA [<variable-name>] [-supportedCommand <cmdlet-name>] {
    <Permitted content>
}

A palavra-chave DATA é necessária. Não diferencia maiúsculas e minúsculas. O conteúdo permitido é 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 que são permitidos em uma seção DATA. Por padrão, somente o ConvertFrom-StringData cmdlet é permitido.

  • Cmdlets que você permite em uma seção DATA ao usar o parâmetro -SupportedCommand.

Ao usar o cmdlet ConvertFrom-StringData em uma seção DATA, você pode colocar os pares chave-valor em cadeias de caracteres entre aspas simples ou duplas ou em cadeias de caracteres aqui entre aspas simples ou duplas. Entretanto, 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ões não sejam executáveis.

-Comando Suportado

O parâmetro SupportedCommand permite indicar que um cmdlet ou função gera apenas dados. Foi desenvolvido para permitir que os usuários incluam cmdlets e funções em uma seção DATA que eles tenham escrito ou testado.

O valor de SupportedCommand é uma lista separada por vírgulas de um ou mais nomes de cmdlet ou função.

Por exemplo, a seção DATA 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 DATA

Para usar o conteúdo de uma seção DATA, atribua-o a uma variável e use a notação variável para acessar o conteúdo.

Por exemplo, a seção DATA a seguir contém um comando ConvertFrom-StringData que converte a cadeia de caracteres aqui em uma tabela de hash. A tabela de hash é atribuída à $TextMsgs variável.

A variável $TextMsgs não faz parte da seção DATA.

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

Para acessar as chaves e os 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 DATA. 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 entre 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 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
}

Confira também