02/07/2024

Comment gérer le Registre Windows avec PowerShell ?

I. Présentation

Dans ce chapitre, nous allons étudier différents cmdlets PowerShell qui vont permettre de lire et modifier les éléments du Registre Windows, que ce soit des clés de Registre ou des valeurs de Registre.

Les cmdlets que nous allons étudier vont vous permettre de manipuler le Registre Windows dans vos scripts PowerShell. Après avoir lu ce chapitre, vous serez en mesure de réaliser les actions suivantes :

  • Récupérer une valeur dans le Registre Windows
  • Rechercher une clé de registre
  • Créer une nouvelle clé de registre ou modifier une clé de registre existante
  • Créer une nouvelle valeur dans le registre ou modifier une valeur existante
  • Renommer ou supprimer une clé de registre ou une valeur

Ce chapitre est disponible au format vidéo :

II. Qu'est-ce que le Registre Windows ?

Le Registre Windows est un composant incontournable au sein des systèmes d'exploitation de Microsoft. C'est un composant à connaître, car tout informaticien a besoin de le manipuler un jour ou l'autre ! La base de registre Windows est une base de données structurée où le système et les applications stockent de nombreuses informations, notamment sur leur configuration. Des données indispensables au bon fonctionnement du système et des applications que vous installez sont stockées dans la base de registre.

Vous l'aurez compris, le Registre Windows est un composant charnière du système d'exploitation Windows. D'ailleurs, pour parler de ce composant, on emploie différents termes : le registre, la base de registre ou le Registre Windows, ce dernier étant le terme officiel.

Bien souvent, nous l'utilisons sans s'en rendre compte à partir de l'interface graphique de Windows : la modification d'un paramètre peut modifier la valeur associée dans la base de registre.

Il contient les paramètres liés aux services Windows, aux associations de fichiers (par exemple, associer Microsoft Word à l'extension "docx"), la configuration et les données des applications, la configuration matérielle de votre machine, des informations sur les profils des utilisateurs, ou encore sur les stratégies de groupe.

Pour approfondir ce sujet, je vous recommande la lecture de cet article :

III. Récupérer une valeur dans le registre

Sur une machine Windows, si vous avez la curiosité de consulter la liste de vos lecteurs avec le cmdlet "Get-PSDrive", vous pourrez remarquer qu'il y a deux lecteurs avec le fournisseur (Provider) "Registry". Ceci correspond au Registre Windows. Nous avons d'une part "HKCU" pour la ruche "HKEY_CURRENT_USER" et "HKLM" pour la ruche "HKEY_LOCAL_MACHINE".

Get-PSDrive

Nous pouvons nous positionner dans le lecteur "HKLM" à l'aide de la commande "cd" ou du cmdlet "Set-Location". Ensuite, si nous listons le contenu du dossier avec l'alias "dir" ou le cmdlet "Get-ChildItem", nous allons lister les clés à la racine de cette ruche.

Set-Location HKLM:\
dir

De la même façon, nous pouvons nous déplacer au sein d'une branche directement à condition d'en connaître le chemin :

Set-Location -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList"

Pour récupérer la valeur d'une valeur du registre, nous allons devoir utiliser le cmdlet "Get-ItemProperty" suivi du chemin vers la clé et le nom de la valeur situé dans cette clé. Voici un exemple avec la valeur "ProfilesDirectory" situé dans la branche "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\".

Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\" -Name "ProfilesDirectory"

En exploitant la commande Get-ChildItem, nous pouvons rechercher une clé dans le registre. En fonction de ce que l'on cherche et du filtre, le résultat sera plus ou moins facilement exploitable. Nous allons nous appuyer sur le paramètre "-Recurse" pour recherche la clé à partir de la racine de la ruche, puis avec "Where-Object", nous allons filtrer le résultat.

Par exemple, pour rechercher sous la ruche "HKCU" les clés dont le nom contient le terme "IT-CONNECT", cela donne :

Get-ChildItem -Path "HKCU:\" -Recurse -ErrorAction SilentlyContinue | Where-Object {$_.Name -Like "*IT-CONNECT*"}

Voyons maintenant comment manipuler le registre au-delà de simplement consulter une valeur.

IV. Manipuler les clés de registre avec PowerShell

A. Créer une clé dans le registre

Le cmdlet "New-Item", que l'on utilise également pour créer un dossier ou un fichier, va être utile pour créer la clé. Par exemple, pour créer la clé "IT-CONNECT" à la racine de la ruche "HKEY_CURRENT_USER", cela donne :

New-Item -Path "HKCU:\" -Name "IT-CONNECT"

A partir de l'Editeur du Registre (regedit.exe), nous pouvons visualiser notre modification :

B. Renommer une clé dans le registre

Pour renommer une clé, nous allons simplement utiliser le cmdlet "Rename-Item" avec le chemin de la clé à renommer (paramètre -Path) et le nouveau nom à lui attribuer (paramètre -NewName) :

Rename-Item -Path "HKCU:\IT-CONNECT" -NewName "ITCONNECT"

C. Supprimer une clé dans le registre

Pour supprimer une clé dans le registre, nous allons utiliser le cmdlet "Remove-Item" en spécifiant le chemin vers la clé à supprimer. Par exemple :

Remove-Item -Path "HKCU:\ITCONNECT"

Voyons comment effectuer des opérations similaires sur les valeurs du registre.

V. Manipuler les valeurs dans le registre avec PowerShell

A. Créer une valeur dans le registre

Directement dans la clé "HKCU:\IT-CONNECT" créée précédemment, nous allons créer une valeur nommée "ITConnectWebsite" de type chaîne (string) avec comme données la valeur "www.it-connect.fr". Pour cela, nous allons utiliser le cmdlet "New-ItemProperty" :

New-ItemProperty -Path "HKCU:\IT-CONNECT" -Name "ITCONNECTWebsite" -Value "www.it-connect.fr" -PropertyType "String"
Modifier registre PowerShell

Pour le type de la valeur, les valeurs possibles pour le paramètre "-PropertyType" sont : Binary, DWord, ExpandString, MultiString, String et QWord. Ceci correspond aux types de valeurs acceptées par le Registre Windows.

B. Renommer une valeur dans le registre

Pour renommer la valeur créée précédemment, nous allons utiliser "Rename-ItemProperty" en précisant l'ancien nom et le nouveau nom, ainsi que le chemin :

Rename-ItemProperty -Path "HKCU:\IT-CONNECT" -Name "ITCONNECTWebsite" -NewName "IT-ConnectWebsite"

C. Changer la valeur d'une valeur du registre

Pour modifier les données de notre valeur, un autre cmdlet va faire son entrée en jeu : "Set-ItemProperty". Nous allons spécifier le chemin vers la clé où se situe la valeur (-Path), le nom de la valeur concernée (-Name) puis la valeur à associer au champ "Données" (-Value) :

Set-ItemProperty -Path "HKCU:\IT-CONNECT\" -Name "IT-ConnectWebsite" -Value "https://www.it-connect.fr"

D. Supprimer une valeur dans le registre

Enfin, nous allons apprendre à supprimer la valeur que nous venons de créer et manipuler. Le cmdlet à utiliser pour supprimer la valeur est "Remove-ItemProperty". Là encore, nous devons préciser plusieurs paramètres : le chemin vers la clé (-Path) et le nom de la valeur à supprimer (-Name) :

Remove-ItemProperty -Path "HKCU:\IT-CONNECT\" -Name "IT-ConnectWebsite"

VI. Conclusion

À l'aide des différentes commandes et exemples de cet article, vous êtes en mesure de manipuler le Registre Windows avec PowerShell. Si vous pouvez accéder à distance à vos serveurs et machines de votre parc à l'aide de WinRM, vous pouvez tout à fait consulter à distance le Registre Windows d'une autre machine. Il suffit de s'appuyer sur le cmdlet Invoke-Command ou de créer une connexion PowerShell à distance.

PowerShell n'intègre pas de cmdlet pour sauvegarder ou restaurer le registre. Vous devrez continuer à utiliser les commandes historiques pour réaliser ces actions, à savoir "reg export" et "reg import".


livre pour apprendre PowerShell
author avatar
Florian BURNEL Co-founder of IT-Connect
Ingénieur système et réseau, cofondateur d'IT-Connect et Microsoft MVP "Cloud and Datacenter Management". Je souhaite partager mon expérience et mes découvertes au travers de mes articles. Généraliste avec une attirance particulière pour les solutions Microsoft et le scripting. Bonne lecture.
Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Envoyer par mail

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.