Sdílet prostřednictvím


ConvertFrom-StringData

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

Syntaxe

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, tyto řetězce se často používají jako vstupní formát. Ve výchozím nastavení musí být klíč oddělen od hodnoty znakem rovná se (=).

Tato rutina ConvertFrom-StringData se považuje za bezpečnou rutinu, kterou lze použít v části DATA skriptu nebo funkce. Při použití v části 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 znaku backtick PowerShellu (`), který by normálně signalizoval konec řádku ve skriptu. Uvnitř tohoto řetězce znak backtick nefunguje. Ve výsledcích můžete také zachovat zpětné lomítko literálu tak, že ho uchytáte předchozím zpětným lomítkem, 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řevedení 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 jednou uvozovou sadou 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 svislé roury (|).

$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řevedení řetězce sem obsahujícího komentář

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

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 řetězec here-string, nikoli 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ím neprázdným znakem 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 dvojitou uvozovou sadou (nikoli řetězec sem) 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žívá 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 uvozvození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 k odeslání řetězce ConvertFrom-StringDatamůžete použít operátor kanálu (|) . Hodnota $Here 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, který je přidružený 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 umožnit správné vykreslení cesty k souboru ve výsledné ConvertFrom-StringData tabulce hash. Dvojité zpětné lomítko zajišťuje, aby se ve výstupu tabulky hash správně vykreslily znaky zpětného lomítka literálu.

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.

Typ:Char
Position:1
Default value:'='
Vyžadováno:False
Přijmout vstup kanálu:False
Přijmout zástupné znaky:False

-StringData

Určuje řetězec, který se má převést. Tento parametr můžete použít nebo převést řetězec na ConvertFrom-StringData. 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ím jiným než prázdným znakem na řádku. Všechny znaky na řádku po # ignorování. Komentáře nejsou zahrnuté v tabulce hash.

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

Typ:String
Position:0
Default value:None
Vyžadováno:True
Přijmout vstup kanálu:True
Přijmout zástupné znaky:False

Vstupy

String

Do této rutiny můžete převést řetězec obsahující pár klíč-hodnota.

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í uživatelské zprávy 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.