about_Data_Sections
Descrizione breve
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
istruzioni
If
,Else
eElseIf
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" } [XML] @' <p> Hello, World </p> '@
I cmdlet consentiti in una sezione
DATA
. Per impostazione predefinita, è consentito solo ilConvertFrom-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
}