Condividi tramite


about_Data_Sections

Breve descrizione

Vengono spiegate le sezioni data, che isolano le stringhe di testo e altri dati di sola lettura dalla logica degli script.

Descrizione lunga

Gli script progettati per PowerShell possono avere una o più sezioni data contenenti solo dati. È possibile includere una o più sezioni data in qualsiasi script, funzione o funzione avanzata. Il contenuto della sezione data è limitato a un subset specificato del linguaggio di scripting di PowerShell.

La separazione dei dati dalla logica del codice semplifica l'identificazione e la gestione sia della logica che dei dati. Consente di avere file di risorse stringa separati per il testo, ad esempio messaggi di errore e stringhe della Guida. Isola anche la logica del codice, che facilita i test di sicurezza e convalida.

In PowerShell è possibile usare la sezione data per supportare l'internazionalizzazione degli script. È possibile usare le sezioni data per semplificare l'isolamento, l'individuazione e l'elaborazione di stringhe che possono essere tradotte in altre lingue.

La sezione data è stata aggiunta nella funzionalità di PowerShell 2.0.

Sintassi

La sintassi per una sezione data è la seguente:

data [<variable-name>] [-SupportedCommand <cmdlet-name>] {
    <Permitted content>
}

La parola chiave data è obbligatoria. Non fa distinzione tra maiuscole e minuscole. Il contenuto consentito è limitato agli elementi seguenti:

  • Tutti gli operatori di PowerShell, ad eccezione di -match

  • istruzioniif, elsee elseif

  • Le variabili automatiche seguenti: $PSCulture, $PSUICulture$true, $false, e$null

  • Commenti

  • Pipeline

  • Istruzioni separate da punto e virgola (;)

  • Valori letterali, ad esempio i seguenti:

    a
    1
    1,2,3
    "PowerShell 2.0"
    @( "red", "green", "blue" )
    @{ a = 0x1; b = "great"; c ="script" }
    @'
    <p> Hello, World </p>
    '@
    
  • Cmdlet consentiti in una data sezione per impostazione predefinita. Per impostazione predefinita, è consentito solo il ConvertFrom-StringData cmdlet .

  • Cmdlet consentiti in una sezione data usando il parametro -SupportedCommand.

Quando si utilizza il cmdlet ConvertFrom-StringData in una sezione data, è possibile racchiudere le coppie chiave-valore in stringhe tra virgolette singole o doppie, oppure in qui-stringhe tra virgolette singole o doppie. Tuttavia, le stringhe che contengono variabili e sottoespressioni devono essere racchiuse in stringhe tra virgolette singole o in stringhe con virgolette singole in modo che le variabili non vengano espanse e che le sottoespressioni non siano eseguibili.

-SupportedCommand

Il parametro SupportedCommand consente di indicare che un cmdlet o una funzione genera solo dati. È progettato per consentire agli utenti di includere cmdlet e funzioni in una sezione data scritta o testata.

Il valore di SupportedCommand è un elenco delimitato da virgole di uno o più nomi di cmdlet o funzioni.

Ad esempio, la sezione data seguente include un cmdlet scritto dall'utente, Format-Xml, che formatta i dati in un file XML:

data -SupportedCommand Format-Xml
{
    Format-Xml -Strings string1, string2, string3
}

Uso di una sezione data

Per usare il contenuto di una sezione data, assegnarlo a una variabile e usare la notazione delle variabili per accedere al contenuto.

Ad esempio, la sezione data seguente contiene un comando ConvertFrom-StringData che converte la stringa here in una tabella hash. La tabella hash viene assegnata alla $TextMsgs variabile .

La variabile $TextMsgs non fa parte della sezione data.

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

Per accedere alle chiavi e ai valori nella tabella hash in $TextMsgs, usare i comandi seguenti.

$TextMsgs.Text001
$TextMsgs.Text002

In alternativa, è possibile inserire il nome della variabile nella definizione della sezione data. Ad esempio:

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

$TextMsgs

Il risultato è lo stesso dell'esempio precedente.

Name                           Value
----                           -----
Text001                        Windows 7
Text002                        Windows Server 2008 R2

Esempi

Stringhe di dati semplici.

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."
}

Stringhe che includono variabili consentite.

data {
    if ($null) {
        "To get help for this cmdlet, type Get-Help New-Dictionary."
    }
}

Stringa con virgolette singole che usa il ConvertFrom-StringData cmdlet :

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

Stringa qui racchiusa tra virgolette doppie che usa il ConvertFrom-StringData cmdlet :

data {
    ConvertFrom-StringData -StringData @"
Msg1 = To start, press any key.
Msg2 = To exit, type "quit".
"@
}

Sezione dati che include un cmdlet scritto dall'utente che genera dati:

data -SupportedCommand Format-Xml {
    Format-Xml -Strings string1, string2, string3
}

Vedere anche