PROJET AUTOBLOG


IT-Connect

Site original : IT-Connect

⇐ retour index

Comment modifier le Registre Windows avec PowerShell ?

jeudi 14 janvier 2021 à 12:45

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 :

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

The post Comment modifier le Registre Windows avec PowerShell ? first appeared on IT-Connect.