ConvertFrom-StringData
Konvertiert eine Zeichenfolge, die mindestens ein Schlüssel-Wert-Paar enthält, in eine Hashtabelle.
Syntax
ConvertFrom-StringData
[-StringData] <String>
[[-Delimiter] <Char>]
[<CommonParameters>]
Beschreibung
Das ConvertFrom-StringData
Cmdlet konvertiert eine Zeichenfolge, die mindestens ein Schlüssel-Wert-Paar 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 vom Wert durch ein Gleichheitszeichen (=
) getrennt werden.
Das ConvertFrom-StringData
Cmdlet 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
unterstützt Escapezeichensequenzen, die von herkömmlichen maschinellen Übersetzungstools zulässig sind. Das heißt, das Cmdlet kann umgekehrte Schrägstriche (\
) als Escapezeichen in den Zeichenfolgendaten interpretieren, indem die Regex.Unescape-Methode verwendet wird, anstelle des PowerShell-Backtick-Zeichens (`
), das normalerweise das Ende einer Zeile in einem Skript signalisiert.
In der here-Zeichenfolge funktioniert das Hochkommazeichen nicht. Sie können auch einen literalen umgekehrten Schrägstrich in Ihren Ergebnissen beibehalten, indem Sie ihn mit einem vorangehenden umgekehrten Schrägstrich wie folgt entweichen: \\
. 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.
PowerShell 7 fügt den Parameter Trennzeichen hinzu.
Beispiele
Beispiel 1: Konvertieren einer hier-Zeichenfolge mit einem einzigen Anführungszeichen in eine Hashtabelle
In diesem Beispiel wird eine Hier-Zeichenfolge mit benutzerbezogenen Nachrichten in eine Hashtabelle konvertiert. In einer Zeichenfolge in einfachen Anführungszeichen werden Werte nicht durch Variablen ersetzt und Ausdrücke nicht ausgewertet.
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 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.
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 here-Zeichenfolge, die einen Kommentar und mehrere Schlüssel-Wert-Paare enthält, in eine Hashtabelle konvertiert.
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 here-Zeichenfolge anstelle einer Variablen, die eine here-Zeichenfolge 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 #
Zeichen muss das erste Zeichen ohne Leerzeichen in der Zeile sein. Alle Zeichen in der Zeile nach dem #
werden ignoriert.
Beispiel 4: Konvertieren einer Zeichenfolge in eine Hashtabelle
In diesem Beispiel wird eine reguläre Zeichenfolge mit doppeltem Anführungszeichen (nicht eine here-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-Zeilenzeilenzeichen (`n
), um die Paare zu trennen.
Beispiel 5: Verwenden von ConvertFrom-StringData im Abschnitt DATA eines Skripts
Dieses Beispiel zeigt einen ConvertFrom-StringData
Befehl, der im Abschnitt DATA eines Skripts verwendet wird.
In den Anweisungen unter dem Abschnitt DATA wird der Text für den Benutzer angezeigt.
$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 6: Verwenden des Pipelineoperators zum Übergeben einer Zeichenfolge
Dieses Beispiel zeigt, dass Sie einen Pipelineoperator (|
) verwenden können, um eine Zeichenfolge an zu ConvertFrom-StringData
senden. Der Wert der $Here
Variablen wird an ConvertFrom-StringData
übergeben, und das Ergebnis in der $Hash
Variablen.
$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.
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
Did not go forth of us, 'twere all alike
As if we had them not.
Beispiel 8: Verwenden des Escapezeichens mit umgekehrtem Schrägstrich, um einen Dateipfad ordnungsgemäß zu rendern
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 ordnungsgemäß gerendert werden kann. 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
-Delimiter
Das Zeichen, das verwendet wird, um den Schlüssel von den Wertdaten in der konvertierten Zeichenfolge zu trennen.
Das Standardtrennzeichen ist das Gleichheitszeichen (=
) . Dieser Parameter wurde in PowerShell 7 hinzugefügt.
Type: | Char |
Position: | 0 |
Default value: | '=' |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-StringData
Gibt die zu konvertierende Zeichenfolge an. Sie können diesen Parameter verwenden oder eine Zeichenfolge an übergeben ConvertFrom-StringData
. Der Parametername ist optional.
Der Wert dieses Parameters muss eine Zeichenfolge sein, die mindestens ein Schlüssel-Wert-Paar enthält. Jedes Schlüssel-Wert-Paar muss sich in einer separaten Zeile befinden, oder jedes Paar muss durch Zeilenumbruchzeichen (`n
) getrennt sein.
Sie können Kommentare in die Zeichenfolge einschließen, aber die Kommentare dürfen sich nicht in derselben Zeile wie ein Schlüssel-Wert-Paar befinden. ConvertFrom-StringData
ignoriert einzeilige Kommentare. Das #
Zeichen muss das erste Nicht-Leerzeichen in der Zeile sein. Alle Zeichen in der Zeile nach dem #
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 Zeichenfolge werden wörtlich als Teil der Zeichenfolgendaten interpretiert. Weitere Informationen finden Sie unter about_Quoting_Rules.
Type: | String |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
Eingaben
Sie können eine Zeichenfolge, die ein Schlüssel-Wert-Paar enthält, an übergeben ConvertFrom-StringData
.
Ausgaben
Dieses Cmdlet gibt eine Hashtabelle zurück, die aus den Schlüssel-Wert-Paaren erstellt wird.
Hinweise
Eine here-Zeichenfolge ist eine Zeichenfolge, die aus mindestens einer Zeile besteht und in der Anführungszeichen als solche interpretiert werden.
Dieses Cmdlet kann in Skripts nützlich sein, die Benutzernachrichten in mehreren gesprochenen Sprachen anzeigen. Sie können die wörterbuchähnlichen Hashtabellen verwenden, um Textzeichenfolgen z. B. in Ressourcendateien von Code zu isolieren und die Textzeichenfolgen für die Verwendung in Übersetzungstools zu formatieren.