Partager via


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 Données qui contiennent uniquement des données. Vous pouvez inclure une ou plusieurs sections 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 du 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 les sections Données pour faciliter l’isolation, la localisation et le traitement des chaînes qui seront traduites dans de nombreuses 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.

Syntax

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

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

L’mot clé de données est obligatoire. Il ne respecte pas la casse. Le contenu autorisé est limité aux éléments suivants :

  • Tous les opérateurs PowerShell, à l’exception de -match

  • Instructions If, Else et ElseIf

  • Les 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 de ConvertFrom-StringData 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 dans des chaînes here-guillemets simples ou entre guillemets doubles. Toutefois, les chaînes qui contiennent des variables et des sous-expressions doivent être placées dans des chaînes à guillemets simples ou dans des chaînes à 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 écrite ou testée.

La valeur de -SupportedCommand est 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-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 de données

Pour utiliser le contenu d’une section Données, affectez-le à une variable et utilisez la notation de variable 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 aux valeurs de la table de hachage dans $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 Données. Par exemple :

DATA TextMsgs {
    ConvertFrom-StringData -StringData @'
Text001 = Windows 7
Text002 = Windows Server 2008 R2
'@
}

$TextMsgs

Le résultat est identique à 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 de here-string à guillemet unique qui utilise l’applet de ConvertFrom-StringData commande :

DATA {
    ConvertFrom-StringData -stringdata @'
Text001 = Windows 7
Text002 = Windows Server 2008 R2
'@
}

Chaîne ici entre guillemets doubles qui utilise l’applet de ConvertFrom-StringData 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