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-StringData
můž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
Do této rutiny můžete převést řetězec obsahující pár klíč-hodnota.
Výstupy
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.