Partager via


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 et ElseIf

  • Variables automatiques suivantes : $PsCulture, , $PsUICulture$True, $Falseet$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’applet ConvertFrom-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, $TextMsgsutilisez 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
}

Voir aussi