Dela via


about_Data_Sections

Kort beskrivning

Förklarar DATA sektioner, vilka isolerar textsträngar och andra skrivskyddade data från skriptlogik.

Lång beskrivning

Skript som är utformade för PowerShell kan ha en eller flera DATA avsnitt som endast innehåller data. Du kan inkludera ett eller flera DATA avsnitt i valfri skript-, funktions- eller avancerad funktion. Innehållet i avsnittet DATA är begränsat till en angiven delmängd av PowerShell-skriptspråket.

Genom att separera data från kodlogik blir det enklare att identifiera och hantera både logik och data. Med den kan du ha separata strängresursfiler för text, till exempel felmeddelanden och hjälpsträngar. Det isolerar också kodlogik, vilket underlättar säkerhets- och valideringstester.

I PowerShell kan du använda avsnittet DATA för att stödja skript internationalisering. Du kan använda DATA avsnitt för att göra det enklare att isolera, hitta och bearbeta strängar som kan översättas till andra språk.

Avsnittet DATA lades till i PowerShell 2.0-funktionen.

Syntax

Syntaxen för ett DATA avsnitt är följande:

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

Nyckelordet DATA krävs. Det är inte skiftlägeskänsligt. Det tillåtna innehållet är begränsat till följande element:

  • Alla PowerShell-operatorer, förutom -match

  • If, Elseoch ElseIf -instruktioner

  • Följande automatiska variabler: $PsCulture, $PsUICulture, $True, $Falseoch $Null

  • Kommentarer

  • Pipelines

  • Instruktioner avgränsade med semikolon (;)

  • Literaler, till exempel följande:

    a
    1
    1,2,3
    "PowerShell 2.0"
    @( "red", "green", "blue" )
    @{ a = 0x1; b = "great"; c ="script" }
    [XML] @'
    <p> Hello, World </p>
    '@
    
  • Cmdletar som tillåts i ett DATA avsnitt. Som standard tillåts endast cmdleten ConvertFrom-StringData .

  • Cmdletar som du tillåter i ett DATA-avsnitt med hjälp av parametern -SupportedCommand.

När du använder cmdleten ConvertFrom-StringData i ett DATA avsnitt kan du omsluta nyckel/värde-paren i enkla eller dubbelciterade strängar eller i enkla eller dubbelciterade här-strängar. Strängar som innehåller variabler och underuttryck måste dock omges av enkelt citerade strängar eller enkelt citerade här-strängar så att variablerna inte expanderas och underuttrycken inte exekveras.

-SupportedCommand

Med parametern SupportedCommand kan du ange att en cmdlet eller funktion endast genererar data. Den är utformad för att tillåta användare att inkludera cmdletar och funktioner i ett DATA avsnitt som de har skrivit eller testat.

Värdet för SupportedCommand är en kommaavgränsad lista med en eller flera cmdlet- eller funktionsnamn.

Följande DATA avsnitt innehåller till exempel en användarskriven cmdlet, Format-Xml, som formaterar data i en XML-fil:

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

Använda ett DATA avsnitt

Om du vill använda innehållet i ett DATA avsnitt tilldelar du det till en variabel och använder variabel notation för att komma åt innehållet.

Följande DATA avsnitt innehåller till exempel ett ConvertFrom-StringData kommando som konverterar här-strängen till en hash-tabell. Hash-tabellen tilldelas till variabeln $TextMsgs .

Variabeln $TextMsgs ingår inte i avsnittet DATA.

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

Om du vill komma åt nycklar och värden i hash-tabellen i $TextMsgsanvänder du följande kommandon.

$TextMsgs.Text001
$TextMsgs.Text002

Alternativt kan du placera variabelnamnet i definitionen av avsnittet DATA. Till exempel:

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

$TextMsgs

Resultatet är detsamma som i föregående exempel.

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

Exempel

Enkla datasträngar.

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."
}

Strängar som innehåller tillåtna variabler.

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

En enkel citerad här-sträng som använder cmdleten ConvertFrom-StringData :

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

En dubbelciterad här-sträng som använder cmdleten ConvertFrom-StringData :

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

Ett dataavsnitt som innehåller en användarskriven cmdlet som genererar data:

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

Se även