ConvertFrom-StringData
Converte una stringa contenente uno o più coppie chiave-valore in una tabella hash.
Sintassi
ConvertFrom-StringData
[-StringData] <String>
[[-Delimiter] <Char>]
[<CommonParameters>]
Descrizione
Il ConvertFrom-StringData
cmdlet converte una stringa contenente una o più coppie chiave e valore in una tabella hash. Poiché ogni coppia chiave-valore deve trovarsi in una riga separata, le stringhe vengono spesso usate come formato di input. Per impostazione predefinita, la chiave deve essere separata dal valore in base a 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 le sequenze di caratteri di escape consentite dagli strumenti di traduzione automatica convenzionali. Ovvero, il cmdlet può interpretare le barre rovesciate () come caratteri di escape nei dati di stringa usando il metodo Regex.Unescape, anziché il carattere backtick di PowerShell (`
\
) che in genere segnala 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 eliminandola con una barra rovesciata precedente, come questo: \\
. 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.
PowerShell 7 aggiunge il parametro Delimiter .
Esempio
Esempio 1: Convertire una stringa qui con virgolette singole in una tabella hash
In questo esempio viene convertita una stringa di messaggi qui con 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 i dati stringa usando un delimitatore diverso
In questo esempio viene illustrato come convertire i dati stringa che usano un carattere diverso come delimitatore. In questo esempio i dati stringa usano il carattere della pipe (|
) come delimitatore.
$StringData = @'
color|red
model|coupe
year|1965
condition|mint
'@
$carData = ConvertFrom-StringData -StringData $StringData -Delimiter '|'
$carData
Name Value
---- -----
condition mint
model coupe
color red
year 1965
Esempio 3: Convertire una stringa qui contenente un commento
Questo esempio converte una stringa qui 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 qui, anziché una variabile che contiene una stringa qui. 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 spazi vuoti sulla riga. Tutti i caratteri sulla riga dopo che vengono #
ignorati.
Esempio 4: Convertire una stringa in una tabella hash
Questo esempio converte una stringa con virgolette doppie regolari (non una stringa qui) 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 newline di PowerShell (`n
) per separare le coppie.
Esempio 5: Usare ConvertFrom-StringData nella sezione DATI di uno script
In questo esempio viene illustrato un ConvertFrom-StringData
comando usato nella sezione DATA di uno script.
Le istruzioni riportate di seguito nella 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 6: usare l'operatore della 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 in pipe e ConvertFrom-StringData
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 7: Usare i 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 \n
di escape viene usata 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 8: Usare il carattere di escape della barra rovesciata per eseguire correttamente il rendering di un percorso file
In questo esempio viene illustrato come usare il carattere di escape della barra rovesciata nei dati stringa per consentire il rendering corretto del percorso del 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
-Delimiter
Carattere utilizzato per separare la chiave dai dati del valore nella stringa da convertire.
Il delimitatore predefinito è il segno di uguale (=
). Questo parametro è stato aggiunto in PowerShell 7.
Type: | Char |
Position: | 1 |
Default value: | '=' |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-StringData
Specifica la stringa da convertire. È possibile usare questo parametro o inviare 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 spazi vuoti sulla riga. Tutti i caratteri sulla riga dopo che vengono #
ignorati. I commenti non vengono inclusi nella tabella hash.
Una stringa qui è costituita da una o più righe. Le virgolette all'interno della stringa qui vengono interpretate letteralmente come parte dei dati stringa. Per altre informazioni, vedere about_Quoting_Rules.
Type: | String |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
Input
È possibile inviare una pipe a 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 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.