ConvertFrom-StringData
Converte una stringa contenente uno o più coppie chiave-valore in una tabella hash.
Sintassi
ConvertFrom-StringData
[-StringData] <String>
[<CommonParameters>]
Descrizione
Il ConvertFrom-StringData
cmdlet converte una stringa che contiene una o più coppie chiave e valore in una tabella hash. Poiché ogni coppia chiave-valore deve trovarsi in una riga separata, le stringhe qui vengono spesso usate come formato di input. Per impostazione predefinita, la chiave deve essere separata dal valore di un segno di uguale (=
).
Il ConvertFrom-StringData
cmdlet è considerato un cmdlet sicuro che può essere usato nella sezione DATA di uno script o di una funzione. Se usato in una sezione DATA , il contenuto della stringa deve essere conforme alle regole per una sezione DATA . Per altre informazioni, vedere about_Data_Sections.
ConvertFrom-StringData
supporta sequenze di caratteri di escape consentite dagli strumenti di traduzione automatica convenzionali. Ovvero, il cmdlet può interpretare le barre rovesciata (\
) come caratteri di escape nei dati stringa usando il metodo Regex.Unescape, anziché il carattere backtick di PowerShell (`
) che in genere segnalerebbe la fine di una riga in uno script.
Il carattere di apice inverso non funziona all'interno della stringa di tipo here. È anche possibile mantenere una barra rovesciata letterale nei risultati eseguendo l'escape con una barra rovesciata precedente, come illustrato di seguito: \\
. I caratteri barra rovesciata senza escape, come quelli comunemente usati nei percorsi di file, possono essere visualizzati come sequenze di escape non valide nei risultati.
Esempio
Esempio 1: Convertire una stringa con virgolette singole in una tabella hash
In questo esempio viene convertita una stringa di messaggi qui racchiusi tra virgolette singole in una tabella hash. In una stringa racchiusa tra virgolette singole i valori per le variabili non vengono sostituiti e le espressioni non vengono valutate.
Il ConvertFrom-StringData
cmdlet converte il valore nella $Here
variabile in una tabella hash.
$Here = @'
Msg1 = The string parameter is required.
Msg2 = Credentials are required for this command.
Msg3 = The specified variable does not exist.
'@
ConvertFrom-StringData -StringData $Here
Name Value
---- -----
Msg3 The specified variable does not exist.
Msg2 Credentials are required for this command.
Msg1 The string parameter is required.
Esempio 2: Convertire una stringa here contenente un commento
In questo esempio viene convertita una stringa here contenente un commento e più coppie chiave-valore in una tabella hash.
ConvertFrom-StringData -StringData @'
Name = Disks.ps1
# Category is optional.
Category = Storage
Cost = Free
'@
Name Value
---- -----
Cost Free
Category Storage
Name Disks.ps1
Il valore del parametro StringData è una stringa here anziché una variabile che contiene una stringa here. Entrambi i formati sono validi. La stringa di tipo here include un commento su una delle stringhe.
ConvertFrom-StringData
ignora i commenti a riga singola, ma il #
carattere deve essere il primo carattere non di spazio vuoto nella riga. Tutti i caratteri nella riga dopo l'oggetto #
vengono ignorati.
Esempio 3: Convertire una stringa in una tabella hash
In questo esempio viene convertita una normale stringa tra virgolette doppie (non una stringa here) in una tabella hash e la salva nella $A
variabile .
$A = ConvertFrom-StringData -StringData "Top = Red `n Bottom = Blue"
$A
Name Value
---- -----
Bottom Blue
Top Red
Per soddisfare la condizione che ogni coppia chiave-valore deve trovarsi in una riga separata, la stringa usa il carattere di nuova riga di PowerShell (`n
) per separare le coppie.
Esempio 4: Usare ConvertFrom-StringData nella sezione DATA di uno script
Questo esempio mostra un ConvertFrom-StringData
comando usato nella sezione DATA di uno script.
Le istruzioni sotto la sezione DATA visualizzano il testo all'utente.
$TextMsgs = DATA {
ConvertFrom-StringData @'
Text001 = The $Notebook variable contains the name of the user's system notebook.
Text002 = The $MyNotebook variable contains the name of the user's private notebook.
'@
}
$TextMsgs
Name Value
---- -----
Text001 The $Notebook variable contains the name of the user's system notebook.
Text002 The $MyNotebook variable contains the name of the user's private notebook.
Poiché il testo include nomi di variabili, deve essere in una stringa racchiusa tra virgolette singole, in modo che le variabili vengano interpretate letteralmente e non espanse. Le variabili non sono consentite nella sezione DATA .
Esempio 5: Usare l'operatore pipeline per passare una stringa
Questo esempio mostra che è possibile usare un operatore pipeline (|
) per inviare una stringa a ConvertFrom-StringData
. Il valore della $Here
variabile viene inviato tramite pipe a ConvertFrom-StringData
e il risultato nella $Hash
variabile.
$Here = @'
Msg1 = The string parameter is required.
Msg2 = Credentials are required for this command.
Msg3 = The specified variable does not exist.
'@
$Hash = $Here | ConvertFrom-StringData
$Hash
Name Value
---- -----
Msg3 The specified variable does not exist.
Msg2 Credentials are required for this command.
Msg1 The string parameter is required.
Esempio 6: Usare caratteri di escape per aggiungere nuove righe e restituire caratteri
In questo esempio viene illustrato l'uso di caratteri di escape per creare nuove righe e restituire caratteri nei dati di origine. La sequenza di escape viene utilizzata \n
per creare nuove righe all'interno di un blocco di testo associato a un nome o a un elemento nella tabella hash risultante.
ConvertFrom-StringData @"
Vincentio = Heaven doth with us as we with torches do,\nNot light them for themselves; for if our virtues\nDid not go forth of us, 'twere all alike\nAs if we had them not.
Angelo = Let there be some more test made of my metal,\nBefore so noble and so great a figure\nBe stamp'd upon it.
"@ | Format-List
Name : Angelo
Value : Let there be some more test made of my metal,
Before so noble and so great a figure
Be stamp'd upon it.
Name : Vincentio
Value : Heaven doth with us as we with torches do,
Not light them for themselves; for if our virtues
Did not go forth of us, 'twere all alike
As if we had them not.
Esempio 7: Usare il carattere di escape barra rovesciata per eseguire correttamente il rendering di un percorso di file
In questo esempio viene illustrato come utilizzare il carattere di escape barra rovesciata nei dati stringa per consentire il rendering corretto di un percorso di file nella tabella hash risultante ConvertFrom-StringData
. La doppia barra rovesciata garantisce che i caratteri di barra rovesciata letterale vengano visualizzati correttamente nell'output della tabella hash.
ConvertFrom-StringData "Message=Look in c:\\Windows\\System32"
Name Value
---- -----
Message Look in c:\Windows\System32
Parametri
-StringData
Specifica la stringa da convertire. È possibile usare questo parametro o inviare tramite pipe una stringa a ConvertFrom-StringData
. Il nome del parametro è facoltativo.
Il valore di questo parametro deve essere una stringa che contiene una o più coppie chiave-valore. Ogni coppia chiave-valore deve trovarsi in una riga separata oppure ogni coppia deve essere separata da caratteri di nuova riga (`n
).
È possibile includere commenti nella stringa, ma i commenti non possono trovarsi nella stessa riga di una coppia chiave-valore. ConvertFrom-StringData
ignora i commenti a riga singola. Il #
carattere deve essere il primo carattere non vuoto nella riga. Tutti i caratteri nella riga dopo l'oggetto #
vengono ignorati. I commenti non vengono inclusi nella tabella hash.
Una stringa here è una stringa costituita da una o più righe. Le virgolette all'interno della stringa here vengono interpretate letteralmente come parte dei dati stringa. Per altre informazioni, vedere about_Quoting_Rules.
Tipo: | String |
Posizione: | 0 |
Valore predefinito: | None |
Necessario: | True |
Accettare l'input della pipeline: | True |
Accettare caratteri jolly: | False |
Input
È possibile inviare tramite pipe una stringa contenente una coppia chiave-valore a questo cmdlet.
Output
Questo cmdlet restituisce una tabella hash creata dalle coppie chiave-valore.
Note
Una stringa di tipo here è una stringa costituita da una o più righe in cui le virgolette vengono interpretate letteralmente.
Questo cmdlet può essere utile negli script che visualizzano i messaggi utente in più lingue parlate. È possibile usare tabelle hash di tipo dizionario per isolare le stringhe di testo dal codice, ad esempio nei file di risorse, e formattare le stringhe di testo per l'utilizzo in strumenti di traduzione.