Compartilhar via


about_Data_Sections

Descrição breve

Explica data seções, 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 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 data seções para facilitar o isolamento, a localização e o processo 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 de 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 permitidos em uma seção data. Por padrão, somente o ConvertFrom-StringData cmdlet é permitido.

  • Cmdlets que você permite em uma seção data usando 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. 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ões não sejam executáveis.

-Comando Suportado

O parâmetro SupportedCommand 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 data que eles escreveram ou testaram.

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