Dela via


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

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 tolka omvänt snedstreck (\) som escape-tecken i strängdata med hjälp av metoden Regex.Unescapei stället för Windows 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.

Exempel

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

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.

Dessa kommandon konverterar en enkel citerad här-strä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.

Det första kommandot skapar en här-sträng och sparar den i variabeln $Here.

Det andra kommandot använder cmdleten ConvertFrom-StringData för att konvertera här-strängen i variabeln $Here till en hash-tabell.

Exempel 2: Konvertera en dubbelciterad här-sträng till en hash-tabell

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

Dessa kommandon visar att ConvertFrom-StringData faktiskt konverterar en here-string till en hash-tabell.

Det första kommandot skapar en dubbelciterad här-sträng som innehåller ett nyckel/värde-par och sparar det i variabeln $P.

Det andra kommandot använder en pipelineoperator (|) för att skicka variabeln $P till cmdleten Get-Member. Resultatet visar att $P är en sträng (System.String).

Det tredje kommandot använder cmdleten ConvertFrom-StringData för att konvertera här-strängen i $P till en hash-tabell. Kommandot lagrar resultatet i variabeln $Hash.

Det sista kommandot använder en pipelineoperator (|) för att skicka variabeln $Hash till cmdleten Get-Member. Resultatet visar att innehållet i variabeln $Hash är en hash-tabell (System.Collections.Hashtable).

Exempel 3: Konvertera en here-string till en hash-tabell

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

# Category is optional.

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

Det här kommandot konverterar en enkel citerad här-sträng som innehåller flera nyckel/värde-par till en hash-tabell.

I det här kommandot är värdet för parametern StringData en here-string i stället för en variabel som innehåller en här-sträng. Båda formaten är giltiga.

Här-strängen innehåller en kommentar om en av strängarna. Kommentarer är giltiga i strängar, förutsatt att kommentaren finns på en annan rad än ett nyckel/värde-par.

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

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

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.

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

Resultatet är en hash-tabell med indata. De återstående kommandona visar utdata.

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

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.

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.

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

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.

Det här exemplet visar att du kan använda en pipelineoperator (|) för att skicka en sträng till ConvertFrom-StringData.

Det första kommandot sparar en här-sträng i variabeln $Here. Det andra kommandot använder en pipelineoperator (|) för att skicka variabeln $Here till ConvertFrom-StringData. Kommandot sparar resultatet i variabeln $Hash.

Det sista kommandot visar innehållet i variabeln $Hash.

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

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.

Det här exemplet visar användningen av escape-tecken för att skapa nya rader och returnera tecken i ConvertFrom-StringData. I det här exemplet används escape-sekvensen \n för att skapa nya rader i ett textblock (värdet i den resulterande hashtabellen) som är associerad med ett namn eller objekt (namnet i den resulterande hashtabellen).

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

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

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

Parametrar

-StringData

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

Värdet för den här parametern måste vara en sträng som omges av enkla citattecken, en sträng som omges av dubbla citattecken eller en här-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. Kommentarerna ingår inte i hash-tabellen.

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

Typ:String
Position:0
Standardvärde:None
Obligatorisk:True
Godkänn pipeline-indata:True
Godkänn jokertecken:False

Indata

String

Du kan skicka en sträng som innehåller ett nyckel/värde-par för att ConvertFrom-StringData.

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.