Outils pour utilisateurs

Outils du site


dev:powershell:table_de_hachage

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

dev:powershell:table_de_hachage [2023/06/21 16:28] – créée yoanndev:powershell:table_de_hachage [2023/08/26 12:25] (Version actuelle) yoann
Ligne 1: Ligne 1:
-{{tag>dev powershell}}+ {{tag>dev powershell}}
  
  
Ligne 26: Ligne 26:
 # Modifier un élément # Modifier un élément
 $computers.'PYCOM' = '192.168.0.43' $computers.'PYCOM' = '192.168.0.43'
 +
 +# Rechercher une clé
 +$computers.ContainsKey('ATARI')
 </code> </code>
 +
 +
 +===== Itérations =====
 +
 +<code powershell>
 +foreach($key in $ageList.keys)
 +{
 +    $message = '{0} is {1} years old' -f $key, $ageList[$key]
 +    Write-Output $message
 +}
 +
 +
 +$ageList.keys | ForEach-Object{
 +    $message = '{0} is {1} years old!' -f $_, $ageList[$_]
 +    Write-Output $message
 +}
 +
 +$ageList.GetEnumerator() | ForEach-Object{
 +    $message = '{0} is {1} years old!' -f $_.key, $_.value
 +    Write-Output $message
 +}
 +</code>
 +
 +
 +===== Passage des arguments =====
 +
 +
 +On peut utiliser les tables de hachages pour définir les paramètres d'une applet. Plutot que de fournir l'ensemble des options de la cmdlet sur une seule ligne, on peut empaqueter les différentes options dans la table de hachage et transmettre la table à la commande avec la syntaxe suivante :
 +
 +<code bash>
 +$DHCPScope = @{
 +    Name          = 'TestNetwork'
 +    StartRange    = '10.0.0.2'
 +    EndRange      = '10.0.0.254'
 +    SubnetMask    = '255.255.255.0'
 +    Description   = 'Network for testlab A'
 +    LeaseDuration = (New-TimeSpan -Days 8)
 +    Type          = "Both"
 +}
 +Add-DhcpServerV4Scope @DHCPScope
 +</code>
 +
 +===== Créer un objet =====
 +
 +Pour certains traitements, le type table de hachage n'est pas nécessaire : on souhaite simplement stocker un ensemble de valeurs et accéder aux propriétés. Dans ce cas on peut convertir la table de hachage en PSCustomObject :
 +
 +<code powershell>
 +
 +$aPerson = [PSCustomObject]@{
 + lastname = "Doe"
 + age = "40"
 + firstname = "John"
 +}
 +
 +# Affiche le type de $aPerson
 +$aPerson.GetType()
 +
 +IsPublic IsSerial Name                                     BaseType
 +-------- -------- ----                                     --------
 +True     False    PSCustomObject                           System.Object
 +
 +
 +$aPerson.firstname
 +John
 +</code> 
 +
 +On peut convertir à tout moment une table de hachage en objet via le transtypage :
 +<code powershell>
 +$aPerson = @{
 + name = "Alix"
 + age = 33
 +}
 +
 +# Renvoie Hashtable
 +$aPerson.GetType()
 +
 +# Transtypage
 +$aPerson = [PSCustomObject]$aPerson
 +
 +# Renvoie PSCustomObject
 +$aPerson.GetType()
 +</code>
 +
 +===== Références =====
 +
 +  * [[https://learn.microsoft.com/fr-fr/powershell/scripting/learn/deep-dives/everything-about-hashtable?view=powershell-7.3|Tout sur les tables de hachage (Microsoft Learn)]]
dev/powershell/table_de_hachage.1687364927.txt.gz · Dernière modification : 2023/06/21 16:28 de yoann