Comment modifier le Registre Windows avec PowerShell ?

I. Présentation

Dans la continuité de mon article "Qu'est-ce que le Registre Windows ?", je souhaitais vous expliquer comment modifier la base de registre Windows à l'aide de PowerShell.

Très pratiques, ces commandes vont vous permettre de manipuler le Registre Windows dans vos scripts PowerShell. Après avoir lu ce tutoriel, 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

Tutoriel disponible au format vidéo :

II. 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

On peut se positionner au sein de ce lecteur, par exemple dans "HKLM" simplement avec la commande "cd" ou le cmdlet "Set-Location". Ensuite, si on liste le contenu du dossier avec l'alias "dir" (ou Get-ChildItem), on va lister les clés à la racine de cette ruche.

Set-Location HKLM:\
dir

De la même façon, on peut se 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, on va 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, on peut 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. On va s'appuyer sur le paramètre -Recurse pour recherche la clé à partir de la racine de la ruche, puis avec Where-Object on va 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.

III. 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"

Ce qui donne :

B. Renommer une clé dans le registre

Pour renommer une clé, on va simplement utiliser Rename-Item avec le chemin de la clé à renommer (Path) et le nouveau nom à lui attribuer (NewName) :

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

C. Supprimer une clé dans le registre

Pour supprimer une clé dans le registre, on va s'appuyer sur le cmdlet "Remove-Item" en spécifiant le chemin vers la clé à supprimer. Par exemple :

Remove-Item -Path "HKCU:\ITCONNECT"

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

IV. 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, on va créer une valeur nommée "ITConnectWebsite" de type chaîne (string) avec comme données la valeur "www.it-connect.fr". Pour cela, on va devoir 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 : Binary, DWord, ExpandString, MultiString, String et QWord.

B. Renommer une valeur dans le registre

Pour renommer la valeur créée précédemment, on va 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. On va 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, on va apprendre à supprimer la valeur que l'on vient de créer et manipuler. La commande pour supprimer la valeur est Remove-ItemProperty. Là encore, on va devoir 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"

V. Conclusion

A 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 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".

Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Partager sur Google+ Envoyer par mail

Florian Burnel

Ingénieur système et réseau et cofondateur d'IT-Connect. 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.

florian a publié 3038 articlesVoir toutes les publications de cet auteur

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.