about_Data_Sections

Description courte

Explique les sections Données, 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 de données qui contiennent uniquement des données. Vous pouvez inclure une ou plusieurs sections de données dans n’importe quel script, fonction ou fonction avancée. Le contenu de la section Données 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, la section Données est utilisée pour prendre en charge l’internationalisation des scripts. Vous pouvez utiliser des sections Données pour faciliter l’isolation, la localisation et le traitement des chaînes qui seront traduites en plusieurs langues d’interface utilisateur.

La section Données est une fonctionnalité PowerShell 2.0. Les scripts avec des sections Données ne s’exécutent pas dans PowerShell 1.0 sans révision.

Syntaxe

La syntaxe d’une section Données est la suivante :

DATA [<variable-name>] [-supportedCommand <cmdlet-name>] {
    <Permitted content>
}

Les mot clé de données sont requises. Il ne respecte 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>
    '@
    
  • Applets de commande autorisées dans une section Données. Par défaut, seule l’applet ConvertFrom-StringData de commande est autorisée.

  • Applets de commande que vous autorisez dans une section Données à l’aide du -SupportedCommand paramètre.

Lorsque vous utilisez l’applet ConvertFrom-StringData de commande dans une section Données, vous pouvez placer les paires clé-valeur dans des chaînes entre guillemets simples ou entre guillemets doubles ou entre guillemets simples ou entre guillemets doubles. Toutefois, les chaînes qui contiennent des variables et des sous-expressions doivent être placées entre des chaînes entre guillemets uniques 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 -SupportedCommand paramètre 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 de données qu’ils ont écrits ou testés.

La valeur est -SupportedCommand une liste séparée par des virgules d’un ou plusieurs noms d’applet de commande ou de fonction.

Par exemple, la section de données suivante inclut une applet de commande écrite par l’utilisateur, Format-Xmlqui met en forme les données dans un fichier XML :

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

Utilisation d’une section de données

Pour utiliser le contenu d’une section Données, affectez-le à une variable et utilisez la notation des variables pour accéder au contenu.

Par exemple, la section de données suivante contient une ConvertFrom-StringData commande qui convertit la chaîne ici en table de hachage. La table de hachage est affectée à la $TextMsgs variable.

La $TextMsgs variable ne fait pas partie de la section de données.

$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 Données. 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