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

PowerShell 7 aggiunge il parametro Delimiter .

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 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 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

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 4: 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 5: 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 6: 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 7: 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 8: 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

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

Type:String
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

Input

String

È possibile inviare tramite pipe una stringa contenente una coppia chiave-valore a questo cmdlet.

Output

Hashtable

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.