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>
                [<CommonParameters>]

Description

Rutina ConvertFrom-StringData převede řetězec, který obsahuje jeden nebo více dvojic klíčů a hodnot, do tabulky hash. Vzhledem k tomu, že každý pár klíč/hodnota musí být na samostatném řádku, často se jako vstupní formát používají tyto řetězce.

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 pro strojový překlad. To znamená, že rutina může interpretovat zpětné lomítka (\) jako řídicí znaky v řetězcových datech pomocí Regex.Unescape Method, místo znak backtick windows 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 \\. 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.

Příklady

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

PS C:\> $Here = @'
Msg1 = The string parameter is required.
Msg2 = Credentials are required for this command.
Msg3 = The specified variable does not exist.
'@
PS C:\> 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.

Tyto příkazy převedou jeden uvozový řetězec zpráv uživatelů na tabulku hash. V řetězci s jednou uvozovou sadou nejsou hodnoty nahrazeny proměnnými a výrazy se nevyhodnocují.

První příkaz vytvoří řetězec sem a uloží ho do proměnné $Here.

Druhý příkaz používá rutinu ConvertFrom-StringData k převodu zde-řetězce v proměnné $Here na tabulku hash.

Příklad 2: Převod dvojitého uvozovaného řetězce na tabulku hash

PS C:\> $P = @"
ISE = Windows PowerShell Integrated Scripting Environment
"@
PS C:\> $P | Get-Member
TypeName: System.String

Name             MemberType            Definition
----             ----------            ----------
Clone            Method                System.Object Clone()

PS C:\> $Hash = ConvertFrom-StringData -StringData $P
PS C:\> $Hash | Get-Member
TypeName: System.Collections.Hashtable
Name              MemberType            Definition
----              ----------            ----------
Add               Method                System.Void Add(Object key, Object

Tyto příkazy ukazují, že ConvertFrom-StringData ve skutečnosti převede zde-řetězec na tabulku hash.

První příkaz vytvoří dvojitý uvozovaný řetězec, který obsahuje jeden pár klíč/hodnota a uloží ho do proměnné $P.

Druhý příkaz používá operátor kanálu (|) k odeslání proměnné $P do rutiny Get-Member. Výsledek ukazuje, že $P je řetězec (System.String).

Třetí příkaz používá rutinu ConvertFrom-StringData k převodu zde-řetězce v $P na tabulku hash. Příkaz uloží výsledek do proměnné $Hash.

Poslední příkaz pomocí operátoru kanálu (|) odešle proměnnou $Hash do rutiny Get-Member. Výsledek ukazuje, že obsah proměnné $Hash je tabulka hash (System.Collections.Hashtable).

Příklad 3: Převedení řetězce sem na tabulku hash

PS C:\> ConvertFrom-StringData -StringData @'
Name = Disks.ps1

# Category is optional.

Category = Storage
Cost = Free
'@
Name                           Value
----                           -----
Cost                           Free
Category                       Storage
Name                           Disks.ps1

Tento příkaz převede jeden uvozový řetězec, který obsahuje několik párů klíč/hodnota, na tabulku hash.

V tomto příkazu je hodnota parametru StringData řetězec sem místo proměnné, která obsahuje tento řetězec. Formát je platný.

Tento řetězec obsahuje komentář k jednomu z řetězců. Komentáře jsou platné v řetězcích za předpokladu, že je komentář na jiném řádku než pár klíč/hodnota.

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

PS C:\> $A = ConvertFrom-StringData -StringData "Top = Red `n Bottom = Blue"
PS C:\> "Top = " + $A.Top
Top = Red PS C:\> "Bottom = " + $A.Bottom
Bottom = Blue

Tento příklad převede běžný řetězec s dvojitou uvozovou sadou (nikoli řetězec sem) na tabulku hash a uloží ho do proměnné $A.

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

Výsledkem je tabulka hash vstupu. Zbývající příkazy zobrazí výstup.

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

PS C:\> $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.
'@
}
PS C:\> $TextMsgs.Text001
The $Notebook variable contains the name of the user's system notebook. PS C:\> $TextMsgs.Text002
The $MyNotebook variable contains the name of the user's private notebook.

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

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

PS C:\> $Here = @'
Msg1 = The string parameter is required.
Msg2 = Credentials are required for this command.
Msg3 = The specified variable does not exist.
'@
PS C:\> $Hash = $Here | ConvertFrom-StringData
PS C:\> $Hash
Name     Value
----     -----
Msg3     The specified variable does not exist.
Msg2     Credentials are required for this command.
Msg1     The string parameter is required.

Tento příklad ukazuje, že pomocí operátoru kanálu (|) můžete odeslat řetězec do ConvertFrom-StringData.

První příkaz uloží řetězec sem do proměnné $Here. Druhý příkaz používá operátor kanálu (|) k odeslání proměnné $Here do ConvertFrom-StringData. Příkaz uloží výsledek do proměnné $Hash.

Poslední příkaz zobrazí obsah proměnné $Hash.

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

PS C:\> 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.

Tento příklad ukazuje použití řídicích znaků k vytvoření nových řádků a vrácení znaků v ConvertFrom-StringData. V tomto příkladu se řídicí sekvence \n používá k vytvoření nových řádků v bloku textu (hodnota ve výsledné tabulce hash), která je přidružená k názvu nebo položce (název ve výsledné tabulce hash).

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

PS C:\> ConvertFrom-StringData "Message=Look in c:\\Windows\\System32"
Name                           Value
----                           -----
Message                        Look in c:\Windows\System32

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 hash tabulky. 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.

Parametry

-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 uzavřený v jednoduchých uvozovkách, řetězec uzavřený do dvojitých uvozovek nebo řetězec se zde obsahující 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. Komentáře nejsou zahrnuté v tabulce hash.

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

Řetězec obsahující pár 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í 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.