Parce que les entrées du Registre sont des propriétés de clés et qu'en tant que telles, elles ne peuvent pas être directement parcourues, nous devons adopter une approche légèrement différente pour les utiliser.
Listage des entrées du Registre
Il existe de nombreuses manières d'examiner des entrées du Registre. Le moyen le plus simple consiste à obtenir les noms des propriétés associées à une clé. Par exemple, pour consulter le nom des entrées dans la clé de Registre HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion, utilisez Get-Item. Les clés de Registre ont une propriété portant le nom générique « Property » qui est une liste des entrées de Registre de cette clé. La commande suivante sélectionne la propriété Property et développe les éléments afin de les présenter sous forme de liste :
PS> Get-Item -Path Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion | Select-Object -ExpandProperty Property DevicePath MediaPathUnexpanded ProgramFilesDir CommonFilesDir ProductId
Pour consulter les entrées du Registre sous une forme plus lisible, utilisez Get-ItemProperty :
PS> Get-ItemProperty -Path Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion PSPath : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SO FTWARE\Microsoft\Windows\CurrentVersion PSParentPath : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SO FTWARE\Microsoft\Windows PSChildName : CurrentVersion PSDrive : HKLM PSProvider : Microsoft.PowerShell.Core\Registry DevicePath : C:\WINDOWS\inf MediaPathUnexpanded : C:\WINDOWS\Media ProgramFilesDir : C:\Program Files CommonFilesDir : C:\Program Files\Common Files ProductId : 76487-338-1167776-22465 WallPaperDir : C:\WINDOWS\Web\Wallpaper MediaPath : C:\WINDOWS\Media ProgramFilesPath : C:\Program Files PF_AccessoriesName : Accessories (default) :
Les propriétés de la clé liées à Windows PowerShell ont toutes le préfixe « PS », comme PSPath, PSParentPath, PSChildName et PSProvider.
Vous pouvez utiliser la notation « . » pour faire référence à l'emplacement actuel. Vous pouvez utiliser Set-Location pour passer tout d'abord au conteneur de Registre CurrentVersion :
Set-Location -Path Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion
Vous pouvez aussi utiliser le lecteur intégré Windows PowerShell HKLM: avec Set-Location :
Set-Location -Path hklm:\SOFTWARE\Microsoft\Windows\CurrentVersion
Vous pouvez ensuite utiliser la notation « . » pour l'emplacement actuel afin de répertorier les propriétés sans spécifier de chemin d'accès complet :
PS> Get-ItemProperty -Path . ... DevicePath : C:\WINDOWS\inf MediaPathUnexpanded : C:\WINDOWS\Media ProgramFilesDir : C:\Program Files ...
L'extension de chemin d'accès fonctionne de la même manière que sur le système de fichiers, de sorte que de cet emplacement, vous pouvez obtenir le listage ItemProperty de HKLM:\SOFTWARE\Microsoft\Windows\Help à l'aide de Get-ItemProperty -Path ..\Help.
Obtention d'une seule entrée du Registre
Si vous souhaitez récupérer une entrée spécifique d'une clé de Registre, plusieurs possibilités s'offrent à vous. Cet exemple recherche la valeur de DevicePath dans HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion.
À l'aide de Get-ItemProperty, utilisez le paramètre Path pour spécifier le nom de la clé et le paramètre Name pour spécifier le nom de l'entrée DevicePath.
PS> Get-ItemProperty -Path HKLM:\Software\Microsoft\Windows\CurrentVersion -Name DevicePath PSPath : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\Software\ Microsoft\Windows\CurrentVersion PSParentPath : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\Software\ Microsoft\Windows PSChildName : CurrentVersion PSDrive : HKLM PSProvider : Microsoft.PowerShell.Core\Registry DevicePath : C:\WINDOWS\inf
Cette commande retourne les propriétés Windows PowerShell standard et la propriété DevicePath.
Remarque : | |
Même si Get-ItemProperty dispose des paramètres Filter, Include et Exclude, ils ne peuvent pas être utilisés pour filtrer par nom de propriété. Ces paramètres font référence à des clés de Registre (qui sont des chemins d'élément) et non à des entrées de Registre (qui sont des propriétés d'élément). |
Une autre possibilité consiste à utiliser l'outil de ligne de commande Reg.exe. Pour afficher l'Aide de reg.exe, tapez reg.exe /? à l'invite de commandes. Pour rechercher l'entrée DevicePath, utilisez reg.exe comme indiqué dans la commande suivante :
PS> reg query HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion /v DevicePath ! REG.EXE VERSION 3.0 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion DevicePath REG_EXPAND_SZ %SystemRoot%\inf
Vous pouvez aussi utiliser l'objet WshShell COM pour rechercher des entrées du Registre, bien que cette méthode ne fonctionne pas avec des données binaires volumineuses ou avec les noms d'entrées de Registre qui incluent des caractères tels que « \ »). Ajoutez le nom de la propriété au chemin d'accès de l'élément avec un séparateur « \ » :
PS> (New-Object -ComObject WScript.Shell).RegRead("HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\DevicePath") %SystemRoot%\inf
Création d'entrées de Registre
Pour ajouter une nouvelle entrée nommée « PowerShellPath » à la clé CurrentVersion, utilisez New-ItemProperty avec le chemin d'accès à la clé, le nom de l'entrée et sa valeur. Pour cet exemple, nous prendrons la valeur de la variable Windows PowerShell $PSHome, qui stocke le chemin d'accès au répertoire d'installation de Windows PowerShell.
Vous pouvez ajouter la nouvelle entrée à la clé en utilisant la commande suivante, laquelle retourne également des informations sur la nouvelle entrée :
PS> New-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion -Name PowerShellPath -PropertyType String -Value $PSHome PSPath : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWAR E\Microsoft\Windows\CurrentVersion PSParentPath : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWAR E\Microsoft\Windows PSChildName : CurrentVersion PSDrive : HKLM PSProvider : Microsoft.PowerShell.Core\Registry PowerShellPath : C:\Program Files\Windows PowerShell\v1.0
PropertyType doit être le nom d'un membre d'énumération Microsoft.Win32.RegistryValueKind issu du tableau suivant :
Valeur PropertyType | Signification |
---|---|
Binary |
Données binaires |
DWord |
Nombre UInt32 valide |
ExpandString |
Chaîne pouvant contenir des variables d'environnement développées dynamiquement |
MultiString |
Chaîne multiligne |
String |
Toute valeur de chaîne |
QWord |
8 octets de données binaires |
Remarque : | |
Vous pouvez ajouter une entrée de Registre à plusieurs endroits en spécifiant un tableau de valeurs pour le paramètre Path : |
New-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion, HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion -Name PowerShellPath -PropertyType String -Value $PSHome
Vous pouvez également remplacer une valeur d'entrée de Registre préexistante en ajoutant le paramètre Force à toute commande New-ItemProperty.
Affectation d'un nouveau nom à des entrées de Registre
Pour renommer l'entrée PowerShellPath en « PSHome », utilisez Rename-ItemProperty :
Rename-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion -Name PowerShellPath -NewName PSHome
Pour afficher la valeur renommée, ajoutez le paramètre PassThru à la commande.
Rename-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion -Name PowerShellPath -NewName PSHome -passthru
Suppression d'entrées de Registre
Pour supprimer les entrées de Registre PSHome et PowerShellPath, utilisez Remove-ItemProperty :
Remove-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion -Name PSHome Remove-ItemProperty -Path HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion -Name PowerShellPath