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
,Else
ochElseIf
-instruktionerFöljande automatiska variabler:
$PsCulture
,$PsUICulture
,$True
,$False
och$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 cmdletenConvertFrom-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 $TextMsgs
anvä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
}