Freigeben über


ConvertFrom-StringData

Konvertiert eine Zeichenfolge, die mindestens ein Schlüssel-Wert-Paar enthält, in eine Hashtabelle.

Syntax

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

Beschreibung

Das cmdlet ConvertFrom-StringData konvertiert eine Zeichenfolge, die ein oder mehrere Schlüssel- und Wertpaare enthält, in eine Hashtabelle. Da jedes Schlüssel-Wert-Paar in einer eigenen Zeile stehen muss, werden hier oft Zeichenfolgen als Eingabeformat verwendet. Standardmäßig muss key von value durch ein Gleichheitszeichen (=) getrennt werden.

Das cmdlet ConvertFrom-StringData gilt als sicheres Cmdlet, das im Abschnitt DATA eines Skripts oder einer Funktion verwendet werden kann. Bei Verwendung in einem DATA Abschnitt muss der Inhalt der Zeichenfolge den Regeln für einen DATA Abschnitt entsprechen. Weitere Informationen finden Sie unter about_Data_Sections.

ConvertFrom-StringData bietet Unterstützung für Escape-Zeichensequenzen, die von herkömmlichen Tools zur maschinellen Übersetzung zugelassen werden. Das heißt, das Cmdlet kann Backslashes (\) als Escape-Zeichen in den Zeichenfolgen interpretieren, indem es die Regex.Unescape-Methode verwendet, anstelle des PowerShell Backtick-Zeichens (`), das normalerweise das Ende einer Zeile in einem Skript signalisieren würde. Innerhalb von here-string funktioniert das Backtick-Zeichen nicht. Sie können auch einen echten Backslash in Ihren Ergebnissen beibehalten, indem Sie ihn mit einem vorangestellten Backslash maskieren, etwa so: \\. Umgekehrte Schrägstriche ohne Escapezeichen, wie z. B. solche, die häufig in Dateipfaden verwendet werden, können in den Ergebnissen als unzulässige Escapesequenzen gerendert werden.

Beispiele

Beispiel 1: Konvertieren einer Zeichenfolge in einfachen Anführungszeichen in eine Hashtabelle

Dieses Beispiel konvertiert einen in einfachen Anführungszeichen stehenden here-string von Benutzernachrichten in eine Hashtabelle. In einer Zeichenfolge in einfachen Anführungszeichen werden Werte nicht durch Variablen ersetzt und Ausdrücke werden nicht ausgewertet. Das cmdlet ConvertFrom-StringData konvertiert den Wert in der $Here Variablen in eine Hashtabelle.

$Here = @'
Msg1 = The string parameter is required.
Msg2 = Credentials are required for this command.
Msg3 = The specified variable doesn't exist.
'@
ConvertFrom-StringData -StringData $Here

Name                           Value
----                           -----
Msg3                           The specified variable doesn't exist.
Msg2                           Credentials are required for this command.
Msg1                           The string parameter is required.

Beispiel 2: Konvertieren eines here-strings, der einen Kommentar enthält

In diesem Beispiel wird eine hier-Zeichenfolge konvertiert, die einen Kommentar und mehrere Schlüsselwertpaare in eine Hashtabelle enthält.

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

# Category is optional.

Category = Storage
Cost = Free
'@

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

Der Wert des Parameters StringData ist ein here-string, anstelle einer Variablen, die einen here-string enthält. Beide Formate sind gültig. Die here-Zeichenfolge enthält einen Kommentar zu einer der Zeichenfolgen. ConvertFrom-StringData ignoriert einzeilige Kommentare, aber das Hash-Zeichen (#) muss das erste Nicht-Leerzeichen in der Zeile sein.

Beispiel 3: Konvertieren einer Zeichenfolge in eine Hashtabelle

Dieses Beispiel konvertiert eine reguläre Zeichenfolge in doppelten Anführungszeichen (kein here-string) in eine Hash-Tabelle und speichert sie in der Variablen $A.

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

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

Um die Bedingung zu erfüllen, dass sich jedes Schlüssel-Wert-Paar in einer separaten Zeile befinden muss, verwendet die Zeichenfolge das PowerShell-Newlinezeichen (`n), um die Paare zu trennen.

Beispiel 4: Verwenden im Abschnitt "DATA" eines Skripts

Dieses Beispiel zeigt einen ConvertFrom-StringData Befehl, der im abschnitt DATA eines Skripts verwendet wird. Die Anweisungen unterhalb des Abschnitts DATA zeigen dem Benutzer den Text an.

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

Da der Text Variablennamen enthält, muss er in einer Zeichenfolge in einfachen Anführungszeichen eingeschlossen werden, damit die Variablen wörtlich interpretiert und nicht erweitert werden. Variablen sind im Abschnitt DATA nicht zulässig.

Beispiel 5: Verwenden Sie den Pipeline-Operator, um eine Zeichenfolge zu übergeben

Dieses Beispiel zeigt, dass Sie einen Pipelineoperator (|) verwenden können, um eine Zeichenfolge an ConvertFrom-StringDatazu senden. Der Wert der Variablen $Here wird nach ConvertFrom-StringData gepiped und das Ergebnis in der Variablen $Hash gespeichert.

$Here = @'
Msg1 = The string parameter is required.
Msg2 = Credentials are required for this command.
Msg3 = The specified variable doesn't exist.
'@
$Hash = $Here | ConvertFrom-StringData
$Hash

Name     Value
----     -----
Msg3     The specified variable doesn't exist.
Msg2     Credentials are required for this command.
Msg1     The string parameter is required.

Beispiel 6: Verwenden Sie Escape-Zeichen, um neue Zeilen und Rückgabezeichen hinzuzufügen

Dieses Beispiel zeigt die Verwendung von Escape-Zeichen, um neue Zeilen und Rückgabezeichen in Quelldaten zu erstellen. Die Escapesequenz \n wird verwendet, um neue Zeilen in einem Textblock zu erstellen, der einem Namen oder Element in der resultierenden Hashtabelle zugeordnet ist.

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
        Didn't go forth of us, 'twere all alike
        As if we had them not.

Beispiel 7: Backslash-Escape-Zeichen verwenden, um einen Dateipfad richtig darzustellen

Dieses Beispiel zeigt, wie Sie das Backslash-Escape-Zeichen in den Zeichenfolgen verwenden, um die Möglichkeit zu bieten, einen Dateipfad in der resultierenden ConvertFrom-StringData-Hashtabelle korrekt darzustellen. Der doppelte umgekehrte Schrägstrich stellt sicher, dass der umgekehrte Literalschrägstrich in der Ausgabe der Hashtabelle ordnungsgemäß gerendert wird.

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

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

Parameter

-StringData

Gibt die zu konvertierende Zeichenfolge an. Sie können diesen Parameter verwenden oder eine Zeichenfolge an ConvertFrom-StringDataübergeben. Der Parametername ist optional.

Der Wert dieses Parameters muss eine Zeichenfolge sein, die mindestens ein Schlüsselwertpaar enthält. Jedes Schlüssel-Wert-Paar muss in einer eigenen Zeile stehen oder durch einen Zeilenumbruch (`n) getrennt sein.

Sie können Kommentare in die Zeichenfolge einfügen, aber die Kommentare können nicht in derselben Zeile wie ein Schlüsselwertpaar enthalten sein. ConvertFrom-StringData ignoriert einzeilige Kommentare. Das Hash-Zeichen (#) muss das erste Nicht-Leerzeichen in der Zeile sein. Alle Zeichen in der Zeile nach dem Hashzeichen (#) werden ignoriert. Die Kommentare sind nicht in der Hashtabelle enthalten.

Ein here-string ist eine Zeichenfolge, die aus einer oder mehreren Zeilen besteht. Anführungszeichen innerhalb des here-strings werden wortwörtlich als Teil der Zeichenfolge interpretiert. Weitere Informationen finden Sie unter about_Quoting_Rules.

Typ:String
Position:0
Standardwert:None
Erforderlich:True
Pipelineeingabe akzeptieren:True
Platzhalterzeichen akzeptieren:False

Eingaben

String

Sie können eine Zeichenfolge, die ein Schlüssel-Wert-Paar enthält, über die Pipeline an dieses Cmdlet übergeben.

Ausgaben

Hashtable

Dieses Cmdlet gibt eine Hashtabelle zurück, die aus den Schlüsselwertpaaren erstellt wird.

Hinweise

Ein Here-String ist eine Zeichenfolge, die aus einer oder mehreren Zeilen besteht, in denen Anführungszeichen wortwörtlich interpretiert werden.

Dieses Cmdlet kann in Skripts hilfreich sein, die Benutzernachrichten in mehreren gesprochenen Sprachen anzeigen. Sie können die Hashtabellen im Wörterbuchstil verwenden, um Textzeichenfolgen aus Code zu isolieren, z. B. in Ressourcendateien, und um die Textzeichenfolgen für die Verwendung in Übersetzungstools zu formatieren.