RUBRIQUE about_Hash_Tables DESCRIPTION COURTE Décrit comment créer, utiliser et trier des tables de hachage dans Windows PowerShell. DESCRIPTION LONGUE Une table de hachage, également appelée " dictionnaire " ou " tableau associatif ", est une structure de données compacte qui stocke une ou plusieurs paires nom/valeur. Par exemple, une table de hachage peut contenir une série de noms et d'ID employé, une série de noms d'ordinateur et d'adresses IP ou une série d'ID de message et de textes de message. Les tables de hachage sont fréquemment utilisées pour leur efficacité dans la recherche et la récupération de données. Vous pouvez utiliser des tables de hachage pour stocker des listes et créer des propriétés calculées dans Windows PowerShell. De plus, Windows PowerShell comporte une applet de commande, ConvertFrom-StringData, qui convertit des chaînes en table de hachage. Création de tables de hachage Les éléments d'une table de hachage sont disposés en paires nom/valeur, comme suit : Msg1="Veuillez entrer votre mot de passe." Msg2="Le paramètre Path est obligatoire." Msg3="L'alias de Get-Command est gcm." Les valeurs sont mappées ou associées aux noms de sorte que lorsque vous envoyez le nom, Windows PowerShell renvoie la valeur. Dans Windows PowerShell, la syntaxe d'une table de hachage est comme suit : @{ <nom> = <valeur>; [<nom> = <valeur> ] ...} Lorsque vous créez une table de hachage, suivez ces quelques règles : - Commencez la table de hachage par un signe arobase (@). - Mettez la table de hachage entre accolades ({}). - Entrez une ou plusieurs paires nom-valeur pour le contenu de la table de hachage. - Utilisez un signe égal (=) pour séparer chaque nom de sa valeur. - Utilisez un point-virgule (;) pour séparer les paires nom/valeur. - Si un nom ou une valeur contient des espaces, mettez-le/la entre guillemets. Par exemple, une table de hachage des messages utilisateur précédents serait comme suit : @{ Msg1="Veuillez entrer votre mot de passe."; Msg2="Le paramètre Path est obligatoire."; Msg3="L'alias de Get-Command est gcm."; } Pour utiliser une table de hachage dans des scripts et des commandes, enregistrez-la dans une variable. La valeur de la variable est un objet de table de hachage (System.Collections.Ha shtable) et chaque nom des paires nom/valeur est une propriété de l'objet de table de hachage. Les commandes suivantes enregistrent la table de hachage de messages utilisateur dans la variable $a et utilisent la méthode de point pour afficher les valeurs. C:\PS> $a = @{ >> Msg1="Veuillez entrer votre mot de passe."; >> Msg2="Le paramètre Path est obligatoire."; >> Msg3="L'alias de Get-Command est gcm."; >> } C:\PS> $a Nom Valeur ---- ----- Msg1 Veuillez entrer votre mot de passe. Msg3 L'alias de Get-Command est gcm. Msg2 Le paramètre Path est obligatoire. C:\PS> $a.Msg1 Veuillez entrer votre mot de passe. Les tables de hachage ne sont pas limitées à un type de données. Vous pouvez entrer tout type de données dans une table de hachage, et vous pouvez combiner des types de données dans une même table. Par exemple, vous pouvez générer une table de hachage contenant un nombre entier, un appel à une applet de commande et une chaîne. Tri de tables de hachage Pour trier la table de hachage alphabétiquement par les clés ou les valeurs, utilisez la méthode GetEnumerator de tables de hachage pour obtenir les clés et valeurs de la table, puis utilisez l'applet de commande Sort-Object pour les trier. Par exemple, la commande suivante trie la table de hachage de $a alphabétiquement par les clés. C:\PS> $a.getenumerator() | sort-object -property key Nom Valeur ---- ----- Msg1 Veuillez entrer votre mot de passe. Msg2 Le paramètre Path est obligatoire. Msg3 L'alias de Get-Command est gcm. La commande suivante utilise la même méthode pour trier les valeurs de hachage dans l'ordre décroissant. C:\PS> $a.getenumerator() | sort-object -property value -descending Nom Valeur ---- ----- Msg2 Le paramètre Path est obligatoire. Msg3 L'alias de Get-Command est gcm. Msg1 Veuillez entrer votre mot de passe. ConvertFrom-StringData L'applet de commande ConvertFrom-StringData convertit une chaîne (string ou here-string) de paires nom/valeur en table de hachage. Vous pouvez utiliser l'applet de commande ConvertFrom-StringData sans risque dans la section Data d'un script et l'utiliser avec l'applet de commande Import-LocalizedD ata pour afficher des messages utilisateur dans la culture d'interface utilisateur de l'utilisateur actuel. Les chaînes here-string sont particulièrement utiles lorsque les valeurs de la table de hachage incluent des guillemets. (Pour plus d'informations sur les chaînes here-string, consultez about_Quoting_Rules.) L'exemple suivant indique comment créer une chaîne here-string à partir des messages utilisateur de l'exemple précédent et comment utiliser ConvertFrom-StringData pour la convertir en table de hachage. La commande suivante crée une chaîne here-string à partir des paires nom/valeur, puis l'enregistre dans la variable $string. C:\PS> $string = @" Msg1="Veuillez entrer votre mot de passe." Msg2="Le paramètre Path est obligatoire." Msg3="L'alias de Get-Command est gcm." "@ Cette commande utilise l'applet de commande ConvertFrom-StringData pour convertir la chaîne here-string en table de hachage. C:\PS> convertfrom-stringdata $string Nom Valeur ---- ----- Msg3 "L'alias de Get-Command est gcm." Msg2 "Le paramètre Path est obligatoire." Msg1 "Veuillez entrer votre mot de passe." VOIR AUSSI about_Arrays about_Quoting_Rules about_Script_Internationalization ConvertFrom-StringData Import-LocalizedData