Sdílet prostřednictvím


about_Data_Sections

Krátký popis

Vysvětluje oddíly DATA, které izolují textové řetězce a další data určená jen pro čtení od logiky skriptu.

Dlouhý popis

Skripty navržené pro PowerShell můžou mít jeden nebo více DATA oddílů, které obsahují jenom data. Do libovolného skriptu, funkce nebo pokročilé funkce můžete zahrnout jednu nebo více DATA sekcí. Obsah oddílu DATA je omezen na zadanou podmnožinu skriptovacího jazyka PowerShellu.

Oddělení dat od logiky kódu usnadňuje identifikaci a správu logiky i dat. Umožňuje mít samostatné soubory prostředků řetězců pro text, jako jsou chybové zprávy a řetězce nápovědy. Izoluje také logiku kódu, která usnadňuje testy zabezpečení a ověřování.

V PowerShellu můžete k podpoře internacionalizace skriptů použít oddíl DATA. Pomocí DATA oddílů můžete usnadnit izolaci, vyhledání a zpracování řetězců, které lze přeložit do jiných jazyků.

Oddíl DATA byl přidán do funkce PowerShellu 2.0.

Syntaxe

Syntaxe oddílu DATA je následující:

DATA [<variable-name>] [-supportedCommand <cmdlet-name>] {
    <Permitted content>
}

Je vyžadováno klíčové slovo DATA. Nerozlišuje malá a velká písmena. Povolený obsah je omezen na následující prvky:

  • Všechny operátory PowerShellu s výjimkou -match

  • If, Elsea ElseIf příkazy

  • Následující automatické proměnné: $PsCulture, $PsUICulture, $True$False, a$Null

  • Komentáře

  • Pipelines

  • Příkazy oddělené středníky (;)

  • Literály, například následující:

    a
    1
    1,2,3
    "PowerShell 2.0"
    @( "red", "green", "blue" )
    @{ a = 0x1; b = "great"; c ="script" }
    [XML] @'
    <p> Hello, World </p>
    '@
    
  • Cmdlety povolené v části DATA. Ve výchozím nastavení je povolená pouze ConvertFrom-StringData rutina.

  • Rutiny, které povolíte v oddílu DATA pomocí parametru -SupportedCommand

Když použijete rutinu ConvertFrom-StringData v části DATA, můžete páry klíč-hodnota uzavřít do řetězců s jednoduchými nebo dvojitými uvozovkami nebo v jednoduchých nebo dvojitých here-stringech. Řetězce, které obsahují proměnné a dílčí výrazy, však musí být uzavřeny do řetězců s jednoduchými uvozovkami nebo v jednoduchých rozepsaných řetězcích, aby proměnné nebyly expandovány a dílčí výrazy nebyly proveditelné.

-SupportedCommand

Parametr SupportedCommand umožňuje indikovat, že rutina nebo funkce generuje pouze data. Je navržená tak, aby uživatelům umožňovala zahrnout rutiny a funkce do DATA části, kterou napsali nebo otestovali.

Hodnota SupportedCommand je čárkami oddělený seznam jednoho nebo více názvů rutin nebo funkcí.

Například následující část DATA obsahuje uživatelsky napsanou rutinu Format-Xml, která formátuje data v souboru XML:

DATA -supportedCommand Format-Xml
{
    Format-Xml -Strings string1, string2, string3
}

Použití oddílu DATA

Pokud chcete použít obsah oddílu DATA, přiřaďte ho proměnné a pro přístup k obsahu použijte notaci proměnných.

Například následující oddíl DATA obsahuje příkaz ConvertFrom-StringData, který převede tento řetězec na tabulku hash. K proměnné je přiřazena $TextMsgs tabulka hash.

Proměnná $TextMsgs není součástí oddílu DATA.

$TextMsgs = DATA {
    ConvertFrom-StringData -StringData @'
Text001 = Windows 7
Text002 = Windows Server 2008 R2
'@
}

Pro přístup ke klíčům a hodnotám v tabulce $TextMsgshash použijte následující příkazy.

$TextMsgs.Text001
$TextMsgs.Text002

Případně můžete název proměnné vložit do definice oddílu DATA. Příklad:

DATA TextMsgs {
    ConvertFrom-StringData -StringData @'
Text001 = Windows 7
Text002 = Windows Server 2008 R2
'@
}

$TextMsgs

Výsledek je stejný jako v předchozím příkladu.

Name                           Value
----                           -----
Text001                        Windows 7
Text002                        Windows Server 2008 R2

Příklady

Jednoduché datové řetězce.

DATA {
    "Thank you for using my PowerShell Organize.pst script."
    "It is provided free of charge to the community."
    "I appreciate your comments and feedback."
}

Řetězce, které obsahují povolené proměnné.

DATA {
    if ($null) {
        "To get help for this cmdlet, type get-help new-dictionary."
    }
}

Řetězec s jednou uvozovanou znaky, který používá rutinu ConvertFrom-StringData :

DATA {
    ConvertFrom-StringData -StringData @'
Text001 = Windows 7
Text002 = Windows Server 2008 R2
'@
}

Dvojitý uvozovaný řetězec, který používá rutinu ConvertFrom-StringData :

DATA  {
    ConvertFrom-StringData -StringData @"
Msg1 = To start, press any key.
Msg2 = To exit, type "quit".
"@
}

Oddíl dat, který obsahuje rutinu napsanou uživatelem, která generuje data:

DATA -supportedCommand Format-XML {
    Format-Xml -Strings string1, string2, string3
}

Viz také