Les administrateurs peuvent effectuer toutes les opérations de registre courantes à l’aide de la bonne vieille interface utilisateur Regedit ou de l’utilitaire reg.exe. Ils disposent également d’une option supplémentaire : Windows PowerShell. PowerShell offre un vaste ensemble d’outils permettant d’interagir avec le registre Microsoft Windows sur la machine locale ou à distance.
Dans cet article, nous allons vous montrer comment obtenir, modifier, créer et supprimer des clés de registre avec PowerShell, comment effectuer une recherche et comment utiliser PowerShell pour se connecter au registre depuis un ordinateur distant.
Obtenir localement des valeurs de clé de registre avec PowerShell
Pour obtenir les valeurs de toutes les clés de registre sur une machine locale, nous devons d’abord trouver le chemin d’accès au registre. Demandons une liste de tous les disques locaux :
get-psdrive
Comme vous pouvez le constater, il y a deux entrées pour le registre : HKEY_CURRENT_USER (HKCU) et HKEY_LOCAL_MACHINE (HKLM). Ce sont deux groupes logiques de clés du registre, des « ruches ».
Nous pouvons donc naviguer jusqu’à la clé racine du registre de la machine locale en exécutant la commande suivante :
cd HKLM:\
Alternativement, nous pouvons affecter à notre emplacement de travail courant un chemin d’accès particulier dans le registre, à l’aide du cmdlet Set-Location suivant :
set-location -path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\
Ensuite, nous pouvons utiliser le cmdlet Get-ChildItem pour afficher toutes les clés de registre de la ruche courante avec leurs propriétés :
Get-childitem
Pour obtenir les paramètres d’une clé spécifique (par exemple la clé Run), utilisez le cmdlet Get-Item, qui spécifie le chemin d’accès :
Get-Item -path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
Obtenir à distance des valeurs de clé de registre avec PowerShell
PowerShell vous permet de vous connecter à distance au registre d’un ordinateur et de le consulter avec WinRM. À cette fin, utilisez le cmdlet Invoke-Command :
Invoke-Command –ComputerName dc1 –ScriptBlock { Get-ItemProperty -Path 'HKCU:\Software\System' -Name WorkingDirectory}
Modifier le registre à distance avec PowerShell
Pour modifier un registre à distance, vous devez d’abord vous y connecter à l’aide du cmdlet Enter-PSSession :
Enter-PSSession pdc -Credential Enterprise\T.Simpson
Le système vous invite à saisir le mot de passe du compte utilisateur que vous avez spécifié. Après authentification, vous êtes en mesure d’utiliser les commandes PowerShell sur l’ordinateur distant.
Rechercher dans le registre avec PowerShell
Pour trouver des clés particulières dans le registre, servez-vous d’un script comme le suivant, qui recherche dans le registre des clés dont le nom contient « Netwrix » :
get-childitem -path hkcu:\ -recurse -ErrorAction SilentlyContinue | Where-Object {$_.Name -like "*Netwrix*"}
Modifier le registre avec PowerShell
Pour modifier l’un des paramètres d’une clé de registre, utilisez le cmdlet Set-ItemProperty. Par exemple, vous pouvez utiliser la commande suivante pour définir une valeur de chaîne pour le paramètre « VMware User Process » de la clé « Run ».
Set-Itemproperty -path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Run' -Name 'VMware User Process' -value 'C:\Program Files\VMware\VMware Tools\vmtoolsd.exe'
Créer une clé de registre avec PowerShell
Pour ajouter une clé au registre, nous devons utiliser le cmdlet New-Item. Créons une nouvelle clé nommée « NetwrixKey » dans la ruche KEY_CURRENT_USER :
New-Item –Path "HKCU:\dummy" –Name NetwrixKey
À présent, créons un paramètre nommé « NetwrixParam » pour notre nouvelle clé, et attribuons-lui comme valeur la chaîne « NetwrixValue » :
New-ItemProperty -Path "HKCU:\dummy\NetwrixKey" -Name "NetwrixParam" -Value ”NetwrixValue” -PropertyType "String"
Voyons ce que cela donne dans le registre :
Supprimer une clé de registre ou un paramètre avec PowerShell
Supprimons maintenant le paramètre « NetwrixKey » que nous venons de créer, à l’aide du cmdlet Remove-ItemProperty :
Remove-ItemProperty -Path "HKCU:\dummy\NetwrixKey" -Name "NetwrixParam"
Ensuite, supprimons la clé « NetwrixKey » elle-même :
Remove-Item -Path "HKCU:\dummy\NetwrixKey" -Recurse
Le paramètre –Recurse autorise PowerShell à supprimer toutes les sous-clés sans confirmation supplémentaire (nous n’avons pas créé de sous-clés dans cet exemple).
Pour supprimer toutes les sous-clés dans la clé spécifiée sans supprimer la clé elle-même, ajoutez le symbole « * » à la fin du chemin d’accès :
Remove-Item -Path "HKCU:\dummy\NetwrixKey\*" -Recurse
Renommer une clé de registre ou un paramètre avec PowerShell
Pour renommer une clé de registre, utilisez le cmdlet Rename-Item :
Rename-Item -Path "HKCU:\dummy\NetwrixKey" NetwrixNewKey
Pour renommer un paramètre d’une clé de registre, utilisez le cmdlet Rename–ItemProperty :
Rename-ItemProperty -Path "HKCU:\dummy\NetwrixKey" -Name "NetwrixParam" -NewName "NetwrixNewParam"
Conclusion
Vous connaissez maintenant les capacités élémentaires de Microsoft Windows PowerShell pour la gestion du registre. Comme vous avez pu vous en rendre compte, il est assez facile de gérer les clés de registre ; mais souvenez-vous qu’une modification, aussi infime soit-elle, peut entraîner votre système d’exploitation vers l’écran bleu de la mort.
Pour cette raison, avant de modifier quoi que ce soit dans le registre, soyez sûr à 100 % de ce que vous modifiez, sauvegardez votre système et vos données, et documentez toutes les modifications effectuées. Netwrix Auditor for Windows Server peut vous y aider : il assure le suivi de toutes les modifications apportées au registre, et génère des rapports et des alertes à leur sujet.