TUTOS.EU

Créer et utiliser une hash table en powershell

Comment manipuler une hash table (un dictionnaire) en powershell

#hash table
$objHashTable = @{} #Initialisation d'une hash table
#$objHashTable.Clear()

$objHashTable.Add("A", "01")
$objHashTable.Add("B", "02")

if ($objHashTable.ContainsKey("C") -ne $true) {$objHashTable.Add("C", "01")}
else{write-host "Pouet"}

Write-host "Nombre d'éléments : $($objHashTable.count)"

Write-host ""
Write-host "Valeurs non triées"
#Enumeration des valeurs en ayant trié sur les noms de clé
foreach ($UneLigne in $objHashTable.GetEnumerator()){
	Write-host "($($UneLigne.Key) : $($UneLigne.Value))"
}

#Enumeration des valeurs en ayant trié sur les noms de clé
Write-host ""
Write-host "Contenu trié par clés"
foreach ($UneLigne in $objHashTable.GetEnumerator() | Sort-Object Name ){
	Write-host "($($UneLigne.Key) : $($UneLigne.Value))"
}

Write-host ""
Write-host "Contenu trié par valeurs"
#Enumeration des valeurs en ayant trié sur les noms de clé
foreach ($UneLigne in $objHashTable.GetEnumerator() | Sort-Object Value ){
	Write-host "($($UneLigne.Key) : $($UneLigne.Value))"
}

#Purge de la Hash Table
$objHashTable.Clear()
Lien vers le fichier : cliquez ici Copier le code

A noter qu'en alternative on peut créer un objet pour chaque ligne d'un tableau. Exemple :

# Créer une liste pour stocker les objets
$listePersonnes = @()

$personne = New-Object PSObject
$personne | Add-Member -MemberType NoteProperty -Name "Nom" -Value "Robert"
$personne | Add-Member -MemberType NoteProperty -Name "Âge" -Value 50
$listePersonnes += $personne
$personne = $null

$personne = New-Object PSObject
$personne | Add-Member -MemberType NoteProperty -Name "Nom" -Value "merouane"
$personne | Add-Member -MemberType NoteProperty -Name "Âge" -Value 30
$listePersonnes += $personne
$personne = $null

$personne = New-Object PSObject
$personne | Add-Member -MemberType NoteProperty -Name "Nom" -Value "Khai"
$personne | Add-Member -MemberType NoteProperty -Name "Âge" -Value 60
$listePersonnes += $personne
$personne = $null

# Trier les valeurs par nom
$listePersonnes = $listePersonnes | Sort-Object Nom
    
# Afficher les informations de chaque personne dans la liste
foreach ($personne in $listePersonnes) {
    Write-Output "Nom : $($personne.Nom) / Âge : $($personne.Âge)"
}
Lien vers le fichier : cliquez ici Copier le code

Pages Web

Site WebDescription
Technet.microsoft.comWorking with Hash Tables
Blogs.msdn.microsoft.comThe Joy of using Hashtables with Windows PowerShell
Technet.microsoft.comConverting the Dictionary Object to Windows PowerShell Commands

Article(s) précédent(s)

2