Condividi tramite


ConvertFrom-StringData

Converte una stringa contenente uno o più coppie chiave-valore in una tabella hash.

Sintassi

ConvertFrom-StringData
                [-StringData] <String>
                [<CommonParameters>]

Descrizione

Il cmdlet ConvertFrom-StringData converte una stringa che contiene una o più coppie chiave e valore in una tabella hash. Poiché ogni coppia chiave-valore deve essere su una riga separata, come formato di input vengono spesso usate stringhe di tipo here.

Il cmdlet ConvertFrom-StringData è considerato un cmdlet sicuro che può essere usato nella sezione DATA di uno script o di una funzione. Quando viene usato in una sezione DATA, il contenuto della stringa deve essere conforme alle regole relative alle sezioni DATA. Per altre informazioni, vedere about_Data_Sections.

ConvertFrom-StringData supporta sequenze di caratteri di escape consentite dagli strumenti di traduzione automatica convenzionali. Vale a dire, il cmdlet può interpretare le barre rovesciate (\) come caratteri di escape nei dati di stringa usando il metodo Regex.Unescape, anziché il Windows PowerShell carattere backtick (') 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.

Esempio

Esempio 1: Convertire una stringa qui con virgolette singole in una tabella hash

PS C:\> $Here = @'
Msg1 = The string parameter is required.
Msg2 = Credentials are required for this command.
Msg3 = The specified variable does not exist.
'@
PS C:\> 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.

Questi comandi convertono una stringa di tipo here di messaggi utente racchiusa 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 primo comando crea una stringa qui e la salva nella variabile $Here.

Il secondo comando usa il cmdlet ConvertFrom-StringData per convertire la stringa qui nella variabile $Here in una tabella hash.

Esempio 2: Convertire una stringa qui con virgolette doppie in una tabella hash

PS C:\> $P = @"
ISE = Windows PowerShell Integrated Scripting Environment
"@
PS C:\> $P | Get-Member
TypeName: System.String

Name             MemberType            Definition
----             ----------            ----------
Clone            Method                System.Object Clone()

PS C:\> $Hash = ConvertFrom-StringData -StringData $P
PS C:\> $Hash | Get-Member
TypeName: System.Collections.Hashtable
Name              MemberType            Definition
----              ----------            ----------
Add               Method                System.Void Add(Object key, Object

Questi comandi illustrano che ConvertFrom-StringData converte effettivamente una stringa qui in una tabella hash.

Il primo comando crea una stringa con virgolette doppie che include una coppia chiave/valore e la salva nella variabile $P.

Il secondo comando usa un operatore della pipeline (|) per inviare la variabile $P al cmdlet Get-Member. Il risultato mostra che $P è una stringa (System.String).

Il terzo comando usa il cmdlet ConvertFrom-StringData per convertire la stringa qui in $P in una tabella hash. Il comando archivia il risultato nella variabile $Hash.

Il comando finale usa un operatore pipeline (|) per inviare la variabile $Hash al cmdlet Get-Member . Il risultato mostra che il contenuto della variabile $Hash è una tabella hash (System.Collections.Hashtable).

Esempio 3: Convertire una stringa qui in una tabella hash

PS C:\> ConvertFrom-StringData -StringData @'
Name = Disks.ps1

# Category is optional.

Category = Storage
Cost = Free
'@
Name                           Value
----                           -----
Cost                           Free
Category                       Storage
Name                           Disks.ps1

Questo comando converte una stringa di tipo here racchiusa tra virgolette singole contenente le coppie chiave-valore in una tabella hash.

In questo comando 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. I commenti sono validi nelle stringhe, purché siano su una riga diversa rispetto alle coppie chiave-valore.

Esempio 4: Convertire una stringa in una tabella hash

PS C:\> $A = ConvertFrom-StringData -StringData "Top = Red `n Bottom = Blue"
PS C:\> "Top = " + $A.Top
Top = Red PS C:\> "Bottom = " + $A.Bottom
Bottom = Blue

Questo esempio converte una stringa con virgolette regolari (non una stringa qui) in una tabella hash e la salva nella variabile $A.

Per soddisfare la condizione in base alla quale ogni coppia chiave-valore deve essere su una riga distinta, usa il carattere di nuova riga (`n) di Windows PowerShell per separare le coppie.

Il risultato è una tabella hash dell'input. I comandi rimanenti visualizzano l'output.

Esempio 5: Usare ConvertFrom-StringData nella sezione DATI di uno script

PS C:\> $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.
'@
}
PS C:\> $TextMsgs.Text001
The $Notebook variable contains the name of the user's system notebook. PS C:\> $TextMsgs.Text002
The $MyNotebook variable contains the name of the user's private notebook.

In questo esempio viene illustrato un comando ConvertFrom-StringData usato nella sezione DATA di uno script. Le istruzioni sotto la sezione DATA visualizzano il testo all'utente.

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

PS C:\> $Here = @'
Msg1 = The string parameter is required.
Msg2 = Credentials are required for this command.
Msg3 = The specified variable does not exist.
'@
PS C:\> $Hash = $Here | ConvertFrom-StringData
PS C:\> $Hash
Name     Value
----     -----
Msg3     The specified variable does not exist.
Msg2     Credentials are required for this command.
Msg1     The string parameter is required.

Questo esempio mostra che è possibile usare un operatore pipeline (|) per inviare una stringa a ConvertFrom-StringData.

Il primo comando salva una stringa qui nella variabile $Here. Il secondo comando usa un operatore della pipeline (|) per inviare la variabile $Here a ConvertFrom-StringData. Il comando salva il risultato nella variabile $Hash.

Il comando finale visualizza il contenuto della variabile $Hash.

Esempio 7: Usare i caratteri di escape per aggiungere nuove righe e restituire caratteri

PS C:\> 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.

In questo esempio viene illustrato l'uso di caratteri di escape per creare nuove righe e restituire caratteri in ConvertFrom-StringData. In questo esempio, la sequenza di escape \n viene usata per creare nuove righe all'interno di un blocco di testo (il valore nella tabella hash risultante) associato a un nome o un elemento (il nome nella tabella hash risultante).

Esempio 8: Usare il carattere di escape della barra rovesciata per eseguire correttamente il rendering di un percorso file

PS C:\> ConvertFrom-StringData "Message=Look in c:\\Windows\\System32"
Name                           Value
----                           -----
Message                        Look in c:\Windows\System32

In questo esempio viene illustrato come usare il carattere di escape della barra rovesciata nei dati stringa per consentire il rendering corretto di un percorso file nella tabella hash ConvertFrom-StringData risultante. La doppia barra rovesciata garantisce che i caratteri di barra rovesciata letterale vengano visualizzati correttamente nell'output della tabella hash.

Parametri

-StringData

Specifica la stringa da convertire. È possibile usare questo parametro o pipe una stringa per ConvertFrom-StringData. Il nome del parametro è facoltativo.

Il valore di questo parametro deve essere una stringa racchiusa tra virgolette singole, una stringa racchiusa tra virgolette doppie o una stringa here contenente una o più coppie chiave/valore. Ogni coppia chiave-valore deve essere su una riga distinta o deve essere separata da caratteri di nuova riga (`n).

È possibile includere commenti nella stringa, purché non siano nella stessa riga di una coppia chiave-valore. I commenti non vengono inclusi nella tabella hash.

Una stringa di tipo here è una stringa costituita da una o più righe in cui le virgolette vengono interpretate letteralmente. 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 una pipe a una stringa contenente una coppia chiave/valore in ConvertFrom-StringData.

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