about_Data_Sections
Description courte
Explique les sections DATA
, qui isolent les chaînes de texte et d’autres données en lecture seule de la logique de script.
Description longue
Les scripts conçus pour PowerShell peuvent avoir une ou plusieurs sections DATA
qui contiennent uniquement des données. Vous pouvez inclure une ou plusieurs sections DATA
dans n’importe quel script, fonction ou fonction avancée. Le contenu de la section DATA
est limité à un sous-ensemble spécifié du langage de script PowerShell.
La séparation des données de la logique de code facilite l’identification et la gestion de la logique et des données. Il vous permet d’avoir des fichiers de ressources de chaîne distincts pour le texte, tels que les messages d’erreur et les chaînes d’aide. Il isole également la logique de code, ce qui facilite les tests de sécurité et de validation.
Dans PowerShell, vous pouvez utiliser la section DATA
pour prendre en charge l’internationalisation des scripts. Vous pouvez utiliser DATA
sections pour faciliter l’isolation, la localisation et le traitement des chaînes qui peuvent être traduites dans d’autres langues.
La section DATA
a été ajoutée à la fonctionnalité PowerShell 2.0.
Syntaxe
La syntaxe d’une section DATA
est la suivante :
DATA [<variable-name>] [-supportedCommand <cmdlet-name>] {
<Permitted content>
}
Le mot clé DATA
est requis. Il ne doit pas respecter pas la casse. Le contenu autorisé est limité aux éléments suivants :
Tous les opérateurs PowerShell, sauf
-match
Instructions
If
,Else
etElseIf
Variables automatiques suivantes :
$PsCulture
, ,$PsUICulture
$True
,$False
et$Null
Commentaires
Pipelines
Instructions séparées par des points-virgules (
;
)Littéraux, tels que les suivants :
a 1 1,2,3 "PowerShell 2.0" @( "red", "green", "blue" ) @{ a = 0x1; b = "great"; c ="script" } [XML] @' <p> Hello, World </p> '@
Cmdlets autorisées dans une section
DATA
. Par défaut, seule l’appletConvertFrom-StringData
de commande est autorisée.Applets de commande que vous autorisez dans une section
DATA
à l’aide du paramètre-SupportedCommand
.
Lorsque vous utilisez le cmdlet ConvertFrom-StringData
dans une section DATA
, vous pouvez entourer les paires clé-valeur (key-value) avec des chaînes entre guillemets simples ou doubles, ou avec des here-strings entre guillemets simples ou doubles. Toutefois, les chaînes qui contiennent des variables et des sous-expressions doivent être placées entre des chaînes à guillemet unique ou dans des chaînes ici entre guillemets simples afin que les variables ne soient pas développées et que les sous-expressions ne soient pas exécutables.
-SupportedCommand
Le paramètre SupportedCommand vous permet d’indiquer qu’une applet de commande ou une fonction génère uniquement des données. Il est conçu pour permettre aux utilisateurs d’inclure des applets de commande et des fonctions dans une section DATA
qu’ils ont écrits ou testés.
La valeur de SupportedCommand est une liste séparée par des virgules d’une ou plusieurs applets de commande ou noms de fonction.
Par exemple, la section DATA
suivante inclut une applet de commande écrite par l’utilisateur, Format-Xml
, qui met en forme les données dans un fichier XML :
DATA -supportedCommand Format-Xml
{
Format-Xml -Strings string1, string2, string3
}
Utilisation d’une section DATA
Pour utiliser le contenu d’une section DATA
, affectez-le à une variable et utilisez la notation des variables pour accéder au contenu.
Par exemple, la section DATA
suivante contient une commande ConvertFrom-StringData
qui convertit la chaîne ici en table de hachage. La table de hachage est affectée à la $TextMsgs
variable.
La variable $TextMsgs
ne fait pas partie de la section DATA
.
$TextMsgs = DATA {
ConvertFrom-StringData -StringData @'
Text001 = Windows 7
Text002 = Windows Server 2008 R2
'@
}
Pour accéder aux clés et valeurs de la table de hachage, $TextMsgs
utilisez les commandes suivantes.
$TextMsgs.Text001
$TextMsgs.Text002
Vous pouvez également placer le nom de la variable dans la définition de la section DATA
. Par exemple :
DATA TextMsgs {
ConvertFrom-StringData -StringData @'
Text001 = Windows 7
Text002 = Windows Server 2008 R2
'@
}
$TextMsgs
Le résultat est le même que l’exemple précédent.
Name Value
---- -----
Text001 Windows 7
Text002 Windows Server 2008 R2
Exemples
Chaînes de données simples.
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."
}
Chaînes qui incluent des variables autorisées.
DATA {
if ($null) {
"To get help for this cmdlet, type get-help new-dictionary."
}
}
Chaîne à guillemet unique qui utilise l’applet ConvertFrom-StringData
de commande :
DATA {
ConvertFrom-StringData -StringData @'
Text001 = Windows 7
Text002 = Windows Server 2008 R2
'@
}
Chaîne ici entre guillemets doubles qui utilise l’applet ConvertFrom-StringData
de commande :
DATA {
ConvertFrom-StringData -StringData @"
Msg1 = To start, press any key.
Msg2 = To exit, type "quit".
"@
}
Section de données qui inclut une applet de commande écrite par l’utilisateur qui génère des données :
DATA -supportedCommand Format-XML {
Format-Xml -Strings string1, string2, string3
}