ConvertFrom-StringData
Konvertiert eine Zeichenfolge mit einem oder mehreren Schlüssel- und Wertpaaren in eine Hashtabelle.
Syntax
Default (Standard)
ConvertFrom-StringData
[-StringData] <String>
[[-Delimiter] <Char>]
[<CommonParameters>]
Beschreibung
Das ConvertFrom-StringData Cmdlet konvertiert eine Zeichenfolge, die ein oder mehrere Schlüssel- und Wertpaare enthält, in eine Hashtabelle. Da sich jedes Schlüssel-Wert-Paar in einer separaten Zeile befinden muss, werden hier-Zeichenfolgen häufig als Eingabeformat verwendet. Standardmäßig muss der Schlüssel durch ein Gleichheitszeichen (=) vom Wert getrennt werden.
Das ConvertFrom-StringData Cmdlet gilt als sicheres Cmdlet, das im data Abschnitt eines Skripts oder einer Funktion verwendet werden kann. Wenn er in einem data Abschnitt verwendet wird, muss der Inhalt der Zeichenfolge den Regeln für einen data Abschnitt entsprechen. Weitere Informationen finden Sie unter about_Data_Sections.
ConvertFrom-StringData unterstützt Escapezeichenabfolgen, die von herkömmlichen maschinellen Übersetzungstools zulässig sind. Das Cmdlet kann umgekehrte Schrägstriche (\) als Escapezeichen in den Zeichenfolgendaten mithilfe der Regex.Unescape-Methode interpretieren, anstelle des PowerShell-Backtick-Zeichens (`), das normalerweise das Ende einer Zeile in einem Skript signalisiert.
Innerhalb der hier aufgeführten Zeichenfolge funktioniert das Hintergrundzeichen nicht. Sie können auch einen literalen umgekehrten Schrägstrich in Ihren Ergebnissen beibehalten, indem Sie ihn mit einem vorherigen umgekehrten Schrägstrich wie folgt kapseln: \\ Unescaped backslash characters, such as those that are used in file paths, can render as illegal escape sequences in your results.
PowerShell 7 fügt den Parameter "Delimiter" hinzu .
Beispiele
Beispiel 1: Konvertieren einer hier zitierten einzel zitierten Zeichenfolge in eine Hashtabelle
In diesem Beispiel wird eine hier zitierte Zeichenfolge von Benutzernachrichten in eine Hashtabelle konvertiert. In einer einstelligen Zeichenfolge werden Werte nicht durch Variablen und Ausdrücke ersetzt.
Das ConvertFrom-StringData Cmdlet 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 von Zeichenfolgendaten mit einem anderen Trennzeichen
In diesem Beispiel wird gezeigt, wie Zeichenfolgendaten konvertiert werden, die ein anderes Zeichen als Trennzeichen verwenden. In diesem Beispiel verwenden die Zeichenfolgendaten das Pipezeichen (|) als Trennzeichen.
$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
Beispiel 3: Konvertieren einer hier-Zeichenfolge mit einem Kommentar
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 StringData-Parameters ist eine hier-Zeichenfolge anstelle einer Variablen, die eine here-Zeichenfolge enthält. Beide Formate sind gültig. Die folgende Zeichenfolge enthält einen Kommentar zu einer der Zeichenfolgen.
ConvertFrom-StringData ignoriert einzeilige Kommentare, aber das Hashzeichen (#) muss das erste Nicht-Leerzeichen in der Zeile sein.
Beispiel 4: Konvertieren einer Zeichenfolge in eine Hashtabelle
In diesem Beispiel wird eine normale doppelte Zeichenfolge (keine hier-Zeichenfolge) in eine Hashtabelle konvertiert und in der $A Variablen gespeichert.
$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) zum Trennen der Paare.
Beispiel 5: Verwenden im Abschnitt "Daten" eines Skripts
Dieses Beispiel zeigt einen ConvertFrom-StringData Befehl, der data im Abschnitt eines Skripts verwendet wird.
Die Anweisungen unterhalb des data Abschnitts 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 eine in einfache Zeichenfolge eingeschlossen werden, sodass die Variablen buchstäblich interpretiert und nicht erweitert werden. Variablen sind im data Abschnitt nicht zulässig.
Beispiel 6: Verwenden des Pipelineoperators zum Übergeben einer Zeichenfolge
Dieses Beispiel zeigt, dass Sie einen Pipelineoperator (|) verwenden können, um eine Zeichenfolge an .ConvertFrom-StringData Der Wert der $Here Variablen wird an ConvertFrom-StringData und das Ergebnis in der $Hash Variablen weitergeleitet.
$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 7: Verwenden von Escapezeichen zum Hinzufügen neuer Zeilen und Zurückgeben von Zeichen
Dieses Beispiel zeigt die Verwendung von Escapezeichen, um neue Zeilen zu erstellen und Zeichen in Quelldaten zurückzugeben. 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 8: Verwenden des umgekehrten Schrägstrich-Escapezeichens zum ordnungsgemäßen Rendern eines Dateipfads
In diesem Beispiel wird gezeigt, wie Sie das umgekehrte Schrägstrich-Escapezeichen in den Zeichenfolgendaten verwenden, damit ein Dateipfad in der resultierenden ConvertFrom-StringData Hashtabelle korrekt gerendert werden kann. Der doppelte umgekehrte Schrägstrich stellt sicher, dass die literalen umgekehrten Schrägstriche in der Hashtabellenausgabe ordnungsgemäß gerendert werden.
ConvertFrom-StringData "Message=Look in C:\\Windows\\System32"
Name Value
---- -----
Message Look in C:\Windows\System32
Parameter
-Delimiter
Das Zeichen, das zum Trennen des Schlüssels von den Wertdaten in der konvertierten Zeichenfolge verwendet wird.
Das Standardtrennzeichen ist das Gleichheitszeichen (=) . Dieser Parameter wurde in PowerShell 7 hinzugefügt.
Parametereigenschaften
| Typ: | Char |
| Standardwert: | = |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
Parametersätze
(All)
| Position: | 1 |
| Obligatorisch.: | False |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
-StringData
Gibt die zu konvertierende Zeichenfolge an. Sie können diesen Parameter verwenden oder eine Zeichenfolge an ConvertFrom-StringDataeine Zeichenfolge ü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 sich in einer separaten Zeile oder jedes Paar durch Zeilenumbruchzeichen (`n) trennen.
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 Hashzeichen (#) 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.
Eine here-Zeichenfolge ist eine Zeichenfolge, die aus einer oder mehreren Zeilen besteht. Anführungszeichen innerhalb der hier angegebenen Zeichenfolge werden buchstäblich als Teil der Zeichenfolgendaten interpretiert. Weitere Informationen finden Sie unter über_Zitierregeln.
Parametereigenschaften
| Typ: | String |
| Standardwert: | None |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
Parametersätze
(All)
| Position: | 0 |
| Obligatorisch.: | True |
| Wert aus Pipeline: | True |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
CommonParameters
Dieses Cmdlet unterstützt die allgemeinen Parameter -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction und -WarningVariable. Weitere Informationen findest du unter about_CommonParameters.
Eingaben
String
Sie können eine Zeichenfolge mit einem Schlüsselwertpaar an dieses Cmdlet weiterleiten.
Ausgaben
Hashtable
Dieses Cmdlet gibt eine Hashtabelle zurück, die aus den Schlüsselwertpaaren erstellt wird.
Hinweise
Eine here-Zeichenfolge ist eine Zeichenfolge, die aus einer oder mehreren Zeilen besteht, in denen Anführungszeichen buchstäblich 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.