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
,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 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-Xml
som 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 $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
}