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




Table des matières