ConvertFrom-StringData

Převede řetězec obsahující jeden nebo více párů klíčů a hodnot na tabulku hash.

Syntax

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

Description

Rutina ConvertFrom-StringData převede řetězec, který obsahuje jeden nebo více párů klíčů a hodnot, na tabulku hash. Vzhledem k tomu, že každý pár klíč-hodnota musí být na samostatném řádku, jsou zde řetězce často používány jako vstupní formát. Ve výchozím nastavení musí být klíč oddělen od hodnoty znakem rovná se (=).

Rutina ConvertFrom-StringData je považována za bezpečnou rutinu, kterou lze použít v části DATA skriptu nebo funkce. Při použití v oddílu DATA musí obsah řetězce odpovídat pravidlům pro oddíl DATA . Další informace najdete v tématu about_Data_Sections.

ConvertFrom-StringData podporuje řídicí sekvence znaků, které jsou povoleny konvenčními nástroji strojového překladu. To znamená, že rutina může interpretovat zpětné lomítka (\) jako řídicí znaky v řetězcových datech pomocí metody Regex.Unescape místo zpětného znaku PowerShellu (`), který by normálně signalizoval konec řádku ve skriptu. Uvnitř tohoto řetězce nefunguje znak zpětného znaku. Můžete také zachovat zpětné lomítko literálu ve výsledcích tak, že ho vysunete pomocí předchozího zpětného lomítka, například takto: \\. Nepoužívané znaky zpětného lomítka, například ty, které se běžně používají v cestách k souborům, můžou ve výsledcích vykreslit jako neplatné řídicí sekvence.

PowerShell 7 přidá parametr Oddělovač .

Příklady

Příklad 1: Převod jednoho uvozovaného řetězce na tabulku hash

V tomto příkladu se převede jeden řetězec sem uvedený řetězec uživatelských zpráv na tabulku hash. V řetězci s jedním uvozvozovým řetězcem nejsou hodnoty nahrazeny proměnnými a výrazy se nevyhodnocují. Rutina ConvertFrom-StringData převede hodnotu v $Here proměnné na tabulku hash.

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

Příklad 2: Převod řetězcových dat pomocí jiného oddělovače

Tento příklad ukazuje, jak převést řetězcová data, která používají jiný znak jako oddělovač. V tomto příkladu řetězcová data jako oddělovač používají znak kanálu (|).

$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

Příklad 3: Převod řetězce sem obsahujícího komentář

Tento příklad převede řetězec sem, který obsahuje komentář a několik párů klíč-hodnota, na tabulku hash.

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

# Category is optional.

Category = Storage
Cost = Free
'@

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

Hodnota parametru StringData je zde-řetězec místo proměnné, která obsahuje zde-řetězec. Formát je platný. Tento řetězec obsahuje komentář k jednomu z řetězců. ConvertFrom-StringData ignoruje jednořádkové komentáře, ale # znak musí být první neprázdný znak na řádku. Všechny znaky na řádku po # ignorování.

Příklad 4: Převod řetězce na tabulku hash

Tento příklad převede běžný řetězec s dvojitým uvozvozovým řetězcem (nikoli zde-řetězec) na tabulku hash a uloží ho $A do proměnné.

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

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

Aby bylo možné splnit podmínku, že každý pár klíč-hodnota musí být na samostatném řádku, řetězec použije k oddělení párů znak nového řádku PowerShellu (`n).

Příklad 5: Použití ConvertFrom-StringData v části DATA skriptu

Tento příklad ukazuje ConvertFrom-StringData příkaz použitý v části DATA skriptu. Příkazy pod částí DATA zobrazují text uživateli.

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

Vzhledem k tomu, že text obsahuje názvy proměnných, musí být uzavřen v řetězci s jedním uvozením, aby se proměnné interpretovaly doslova a ne rozbalily. Proměnné nejsou povoleny v části DATA .

Příklad 6: Předání řetězce pomocí operátoru kanálu

Tento příklad ukazuje, že můžete k odeslání řetězce ConvertFrom-StringDatapoužít operátor kanálu (|) . $Here Hodnota proměnné se předá ConvertFrom-StringData a výsledek proměnné$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.

Příklad 7: Přidání nových řádků a návratových znaků pomocí řídicích znaků

Tento příklad ukazuje použití řídicích znaků k vytvoření nových řádků a vrácení znaků ve zdrojových datech. Řídicí sekvence \n slouží k vytvoření nových řádků v bloku textu přidruženého k názvu nebo položce ve výsledné tabulce hash.

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.

Příklad 8: Použití řídicího znaku zpětného lomítka k správnému vykreslení cesty k souboru

Tento příklad ukazuje, jak pomocí řídicího znaku zpětného lomítka v řetězcových datech povolit správné vykreslení cesty k souboru ve výsledné ConvertFrom-StringData tabulce hash. Dvojité zpětné lomítko zajišťuje správné vykreslení znaků zpětného lomítka literálu ve výstupu tabulky hash.

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

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

Parametry

-Delimiter

Znak použitý k oddělení klíče od dat hodnoty v řetězci, který se převádí. Výchozí oddělovač je znak rovná se (=). Tento parametr byl přidán v PowerShellu 7.

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

-StringData

Určuje řetězec, který se má převést. Tento parametr můžete použít nebo ho zavést do ConvertFrom-StringDatařetězce . Název parametru je volitelný.

Hodnota tohoto parametru musí být řetězec, který obsahuje jeden nebo více párů klíč-hodnota. Každý pár klíč-hodnota musí být na samostatném řádku nebo každý pár musí být oddělený znaky nového řádku (`n).

Do řetězce můžete zahrnout komentáře, ale komentáře nemohou být na stejném řádku jako pár klíč-hodnota. ConvertFrom-StringData ignoruje jednořádkové komentáře. Znak # musí být první prázdný znak na řádku. Všechny znaky na řádku po # ignorování. Komentáře nejsou zahrnuté v tabulce hash.

Here-string je řetězec skládající se z jednoho nebo více řádků. Uvozovky v rámci tohoto řetězce se interpretují doslova jako součást řetězcových dat. Další informace najdete v tématu about_Quoting_Rules.

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

Vstupy

String

Řetězec obsahující dvojici klíč-hodnota můžete převést na ConvertFrom-StringData.

Výstupy

Hashtable

Tato rutina vrátí tabulku hash, kterou vytvoří z párů klíč-hodnota.

Poznámky

Zde-řetězec je řetězec skládající se z jednoho nebo více řádků, ve kterých jsou uvozovky interpretovány doslova.

Tato rutina může být užitečná ve skriptech, které zobrazují zprávy uživatelů v několika mluvených jazycích. Pomocí tabulek hash ve stylu slovníku můžete izolovat textové řetězce od kódu, například v souborech prostředků, a formátovat textové řetězce pro použití v nástrojích pro překlad.