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