about_Data_Sections

Descrizione breve

Vengono illustrate le sezioni Dati, che isolano le stringhe di testo e altri dati di sola lettura dalla logica di script.

Descrizione lunga

Gli script progettati per PowerShell possono avere una o più sezioni Dati che contengono solo dati. È possibile includere una o più sezioni Dati in qualsiasi script, funzione o funzione avanzata. Il contenuto della sezione Dati è 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 la sezione Dati viene usata per supportare l'internazionalizzazione degli script. È possibile usare le sezioni Dati per semplificare l'isolamento, l'individuazione e l'elaborazione delle stringhe che verranno tradotte in molte lingue dell'interfaccia utente.

La sezione Dati è una funzionalità di PowerShell 2.0. Gli script con le sezioni Dati non verranno eseguiti in PowerShell 1.0 senza revisione.

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

  • Pipelines

  • 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" }
    [XML] @'
    <p> Hello, World </p>
    '@
    
  • Cmdlet consentiti in una sezione Dati. Per impostazione predefinita, è consentito solo il ConvertFrom-StringData cmdlet .

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

Quando si usa il ConvertFrom-StringData cmdlet in una sezione Data, è possibile racchiudere le coppie chiave-valore in stringhe racchiuse tra virgolette singole o doppie o tra virgolette singole o racchiuse tra virgolette doppie. Tuttavia, le stringhe che contengono variabili e sottoespressioni devono essere racchiuse tra 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 -SupportedCommand parametro 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 di dati 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 dati 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 Dati

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 dei dati seguente contiene un ConvertFrom-StringData comando che converte la stringa here in una tabella hash. La tabella hash viene assegnata alla $TextMsgs variabile .

La $TextMsgs variabile non fa parte della sezione dati.

$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 Dati. 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
}

Vedi anche