Parce que les clés de Registre sont des éléments sur les lecteurs Windows PowerShell, leur utilisation est très semblable à celle des fichiers et dossiers. Il existe toutefois une différence essentielle : chaque élément d'un lecteur Windows PowerShell basé sur le Registre est un conteneur, au même titre qu'un dossier sur un lecteur de système de fichiers. Les entrées de Registre et leurs valeurs associées sont quant à elles des propriétés des éléments et non des éléments distincts.

Listage de toutes les sous-clés d'une clé de Registre

Vous pouvez afficher tous les éléments situés directement dans une clé de Registre en utilisant Get-ChildItem. Ajoutez le paramètre Force optionnel pour afficher les éléments masqués ou système. Par exemple, cette commande affiche les éléments situés directement sur le lecteur Windows PowerShell HKCU:, qui correspond à la ruche de Registre HKEY_CURRENT_USER :

PS> Get-ChildItem -Path hkcu:\


   Hive: Microsoft.PowerShell.Core\Registry::HKEY_CURRENT_USER

SKC  VC Name                           Property
---  -- ----                           --------
  2   0 AppEvents                      {}
  7  33 Console                        {ColorTable00, ColorTable01, ColorTab...
 25   1 Control Panel                  {Opened}
  0   5 Environment                    {APR_ICONV_PATH, INCLUDE, LIB, TEMP...}
  1   7 Identities                     {Last Username, Last User ...
  4   0 Keyboard Layout                {}
...

Il s'agit des clés de niveau supérieur visibles sous HKEY_CURRENT_USER dans l'Éditeur du Registre (Regedit.exe).

Vous pouvez également spécifier ce chemin d'accès de Registre en spécifiant le nom du fournisseur du Registre, suivi de « :: ». Le nom complet du fournisseur de Registre est Microsoft.PowerShell.Core\Registry, mais peut être abrégé en Registry. Chacune des commandes suivantes fournit la liste du contenu situé directement sous HKCU :

Get-ChildItem -Path Registry::HKEY_CURRENT_USER
Get-ChildItem -Path Microsoft.PowerShell.Core\Registry::HKEY_CURRENT_USER
Get-ChildItem -Path Registry::HKCU
Get-ChildItem -Path Microsoft.PowerShell.Core\Registry::HKCU
Get-ChildItem HKCU:

Ces commandes répertorient uniquement les éléments contenus directement, de manière très similaire à l'utilisation de DIR dans Cmd.exe ou de ls dans un interpréteur de commandes UNIX. Pour afficher les éléments contenus, vous devez spécifier le paramètre Recurse. Pour répertorier toutes les clés de Registre de HKCU, utilisez la commande suivante (cette opération peut être très longue) :

Get-ChildItem -Path hkcu:\ -Recurse

Get-ChildItem peut réaliser des opérations de filtrage complexes grâce à ses paramètres Path, Filter, Include et Exclude, mais ces paramètres reposent généralement uniquement sur le nom. Vous pouvez réaliser un filtrage complexe sur d'autres propriétés d'éléments à l'aide de l'applet de commande Where-Object. La commande suivante recherche toutes les clés de HKCU:\Software qui ne comportent pas plus d'une sous-clé et ont également quatre valeurs exactement :

Get-ChildItem -Path HKCU:\Software -Recurse | Where-Object -FilterScript {($_.SubKeyCount -le 1) -and ($_.ValueCount -eq 4) }

Copie de clés

La copie est réalisée par Copy-Item. La commande suivante copie HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion et toutes ses propriétés dans HKCU:\, en créant une clé nommée « CurrentVersion » :

Copy-Item -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion' -Destination hkcu:

Si vous examinez cette nouvelle clé dans l'Éditeur du Registre ou en utilisant Get-ChildItem, vous remarquerez que le nouvel emplacement ne comporte pas de copies des sous-clés contenues. Pour copier tout le contenu d'un conteneur, vous devez spécifier le paramètre Recurse. Pour rendre récursive la commande de copie précédente, utilisez cette commande :

Copy-Item -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion' -Destination hkcu: -Recurse

Vous pouvez toujours utiliser les autres outils dont vous disposez pour effectuer des copies de système de fichiers. Tous les outils d'édition du Registre, y compris reg.exe, regini.exe et regedit.exe, et les objets COM qui prennent en charge l'édition du Registre (comme WScript.Shell et la classe WMI StdRegProv), peuvent être utilisés à partir de Windows PowerShell.

Création de clés

La création de clés dans le Registre est plus simple que la création d'un élément dans un système de fichiers. Parce que toutes les clés de Registre sont des conteneurs, vous n'avez pas besoin de spécifier le type d'élément ; il vous suffit de fournir un chemin d'accès explicite, tel que :

New-Item -Path hkcu:\software\_DeleteMe

Vous pouvez également utiliser un chemin d'accès basé sur fournisseur pour spécifier une clé :

New-Item -Path Registry::HKCU\_DeleteMe

Suppression de clés

La suppression d'éléments est essentiellement la même pour tous les fournisseurs. Les commandes suivantes suppriment des éléments silencieusement :

Remove-Item -Path hkcu:\Software\_DeleteMe
Remove-Item -Path 'hkcu:\key with spaces in the name'

Suppression de toutes les clés d'une clé spécifique

Vous pouvez supprimer des éléments contenus à l'aide de Remove-Item, mais vous serez invité à confirmer la suppression si un élément en contient d'autres. Par exemple, si nous essayons de supprimer la sous-clé HKCU:\CurrentVersion que nous avons créée, nous obtenons ceci :

Remove-Item -Path hkcu:\CurrentVersion

Confirm
The item at HKCU:\CurrentVersion\AdminDebug has children and the -recurse
parameter was not specified. If you continue, all children will be removed with
 the item. Are you sure you want to continue?
[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help
(default is "Y"):

Pour supprimer des éléments contenus sans demande de confirmation, spécifiez le paramètre -Recurse :

Remove-Item -Path HKCU:\CurrentVersion -Recurse

Si vous souhaitez supprimer tous les éléments situés sous HKCU:\CurrentVersion, mais pas HKCU:\\CurrentVersion lui-même, vous pouvez utiliser à la place :

Remove-Item -Path HKCU:\CurrentVersion\* -Recurse




Table des matières