about_Data_Sections

Kort beskrivning

Förklarar dataavsnitt som isolerar textsträngar och andra skrivskyddade data från skriptlogik.

Lång beskrivning

Skript som är utformade för PowerShell kan ha ett eller flera dataavsnitt som endast innehåller data. Du kan inkludera ett eller flera dataavsnitt 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 används avsnittet Data för att stödja skript internationalisering. Du kan använda dataavsnitt för att göra det enklare att isolera, hitta och bearbeta strängar som kommer att översättas till många användargränssnittsspråk (UI).

Avsnittet Data är en PowerShell 2.0-funktion. Skript med dataavsnitt körs inte i PowerShell 1.0 utan revision.

Syntax

Syntaxen för ett dataavsnitt ä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 dataavsnitt. Som standard tillåts endast cmdleten ConvertFrom-StringData .

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

När du använder cmdleten ConvertFrom-StringData i ett dataavsnitt kan du omsluta nyckel/värde-paren i enciterade 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 enciterade strängar eller i enkla här-strängar så att variablerna inte expanderas och underuttrycken inte kan köras.

-SupportedCommand

Med -SupportedCommand parametern 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 dataavsnitt som de har skrivit eller testat.

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

Följande dataavsnitt innehåller till exempel en användarskriven cmdlet, , Format-Xmlsom formaterar data i en XML-fil:

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

Använda ett dataavsnitt

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

Följande dataavsnitt 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 är inte en del av dataavsnittet.

$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