ConvertFrom-StringData

Konverterar en sträng som innehåller ett eller flera nyckel- och värdepar till en hash-tabell.

Syntax

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

Description

Cmdleten ConvertFrom-StringData konverterar en sträng som innehåller ett eller flera nyckel- och värdepar till en hash-tabell. Eftersom varje nyckel/värde-par måste finnas på en separat rad används here-strings ofta som indataformat. Som standard måste nyckeln separeras från värdet med ett likhetstecken (=).

Cmdleten ConvertFrom-StringData anses vara en säker cmdlet som kan användas i avsnittet DATA i ett skript eller en funktion. När det används i ett DATA-avsnitt måste innehållet i strängen följa reglerna för ett DATA-avsnitt . Mer information finns i about_Data_Sections.

ConvertFrom-StringData stöder escape-teckensekvenser som tillåts av konventionella maskinöversättningsverktyg. Cmdleten kan alltså tolka omvänt snedstreck (\) som escape-tecken i strängdata med hjälp av metoden Regex.Unescape i stället för PowerShell-backtick-tecknet (`) som normalt skulle signalera slutet på en rad i ett skript. I strängen här fungerar inte backtick-tecknet. Du kan också bevara ett literalt omvänt snedstreck i resultatet genom att undvika det med ett föregående omvänt snedstreck, så här: \\. Icke-kapslade omvänt snedstreck, till exempel de som ofta används i filsökvägar, kan återges som olagliga escape-sekvenser i dina resultat.

PowerShell 7 lägger till parametern Avgränsare .

Exempel

Exempel 1: Konvertera en enkel citerad här-sträng till en hash-tabell

I det här exemplet konverteras en enkel citatsträng med användarmeddelanden till en hash-tabell. I en sträng med en citattecken ersätts inte värden med variabler och uttryck utvärderas inte. Cmdleten ConvertFrom-StringData konverterar värdet i variabeln $Here till en hash-tabell.

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

Exempel 2: Konvertera strängdata med en annan avgränsare

Det här exemplet visar hur du konverterar strängdata som använder ett annat tecken som avgränsare. I det här exemplet använder strängdata pipe-tecknet (|) som avgränsare.

$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

Exempel 3: Konvertera en här sträng som innehåller en kommentar

Det här exemplet konverterar en här-sträng som innehåller en kommentar och flera nyckel/värde-par till en hash-tabell.

ConvertFrom-StringData -StringData @'
Name = Disks.ps1

# Category is optional.

Category = Storage
Cost = Free
'@

Name                           Value
----                           -----
Cost                           Free
Category                       Storage
Name                           Disks.ps1

Värdet för parametern StringData är en here-string i stället för en variabel som innehåller en here-string. Båda formaten är giltiga. Här-strängen innehåller en kommentar om en av strängarna. ConvertFrom-StringData ignorerar enradskommentarer, men # tecknet måste vara det första icke-blankstegstecknet på raden. Alla tecken på raden efter # ignoreras.

Exempel 4: Konvertera en sträng till en hash-tabell

Det här exemplet konverterar en vanlig dubbelciterad sträng (inte en här-sträng) till en hash-tabell och sparar den i variabeln $A .

$A = ConvertFrom-StringData -StringData "Top = Red `n Bottom = Blue"
$A

Name             Value
----             -----
Bottom           Blue
Top              Red

För att uppfylla villkoret att varje nyckel/värde-par måste finnas på en separat rad använder strängen PowerShell-tecknet (`n) för att separera paren.

Exempel 5: Använd ConvertFrom-StringData i avsnittet DATA i ett skript

Det här exemplet visar ett ConvertFrom-StringData kommando som används i avsnittet DATA i ett skript. Instruktionerna under avsnittet DATA visar texten för användaren.

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

Eftersom texten innehåller variabelnamn måste den omges av en enciterad sträng så att variablerna tolkas bokstavligen och inte expanderas. Variabler tillåts inte i avsnittet DATA .

Exempel 6: Använd pipelineoperatorn för att skicka en sträng

Det här exemplet visar att du kan använda en pipelineoperator (|) för att skicka en sträng till ConvertFrom-StringData. Värdet för variabeln $Here skickas till ConvertFrom-StringData och resultatet i variabeln $Hash .

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

Exempel 7: Använd escape-tecken för att lägga till nya rader och returnera tecken

Det här exemplet visar användningen av escape-tecken för att skapa nya rader och returnera tecken i källdata. Escape-sekvensen \n används för att skapa nya rader i ett textblock som är associerat med ett namn eller objekt i den resulterande hash-tabellen.

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.

Exempel 8: Använd escape-tecknet för omvänt snedstreck för att återge en filsökväg korrekt

Det här exemplet visar hur du använder escape-tecknet för omvänt snedstreck i strängdata så att en filsökväg kan återges korrekt i den resulterande ConvertFrom-StringData hash-tabellen. Det dubbla omvänt snedstrecket säkerställer att de literala omvänt snedstreckstecken återges korrekt i hash-tabellens utdata.

ConvertFrom-StringData "Message=Look in c:\\Windows\\System32"

Name                           Value
----                           -----
Message                        Look in c:\Windows\System32

Parametrar

-Delimiter

Tecknet som används för att skilja nyckeln från värdedata i strängen som konverteras. Standardgränsaren är likhetstecknet (=). Den här parametern lades till i PowerShell 7.

Type:Char
Position:1
Default value:'='
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-StringData

Anger strängen som ska konverteras. Du kan använda den här parametern eller skicka en sträng till ConvertFrom-StringData. Parameternamnet är valfritt.

Värdet för den här parametern måste vara en sträng som innehåller ett eller flera nyckel/värde-par. Varje nyckel/värde-par måste finnas på en separat rad, eller så måste varje par avgränsas med nya radtecken (`n).

Du kan inkludera kommentarer i strängen, men kommentarerna kan inte finnas på samma rad som ett nyckel/värde-par. ConvertFrom-StringData ignorerar enradskommentarer. Tecknet # måste vara det första icke-blankstegstecknet på raden. Alla tecken på raden efter # ignoreras. Kommentarerna ingår inte i hash-tabellen.

En här-sträng är en sträng som består av en eller flera rader. Citattecken i den här strängen tolkas bokstavligen som en del av strängdata. Mer information finns i about_Quoting_Rules.

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

Indata

String

Du kan skicka en sträng som innehåller ett nyckel/värde-par till den här cmdleten.

Utdata

Hashtable

Den här cmdleten returnerar en hash-tabell som den skapar från nyckel/värde-paren.

Kommentarer

En här-sträng är en sträng som består av en eller flera rader inom vilka citattecken tolkas bokstavligen.

Den här cmdleten kan vara användbar i skript som visar användarmeddelanden på flera talade språk. Du kan använda hash-tabeller i ordlisteformat för att isolera textsträngar från kod, till exempel i resursfiler, och för att formatera textsträngarna för användning i översättningsverktyg.