Ceci est une ancienne révision du document !
Gérer le registre Windows
Le registre Windows stocke les paramètres du système et de bon nombre d'applications. Powershell peut créer, récupérer, modifier et supprimer des informations dans cette base et ainsi répondre à vos différents besoins.
<note warning>Attention : le registre est une zone sensible. Sa modification ne peut être effectuée qu'avec des droits d'administrateur et l'ajout, la modification et/ou la perte de certaines informations peuvent entraîner l'instabilité de votre système. A manipuler qu'en connaissance de cause donc.</note>
Windows organise son registre comme une arborescence de fichier :
- Chaque registre est représenté comme un lecteur.
- Chaque clé est représentée comme un dossier.
- Chaque propriété est représentée comme un fichier.
- Chaque valeur est représentée comme le contenu d'un fichier (d'une propriété en l’occurrence).
Powershell va donc traiter les de registre de la même manière et avec les mêmes commandes que pour des dossiers sur le disque. Il utilisera quelques commandes supplémentaires pour les propriétés et les valeurs.
Les différents registres
Windows possèdent 6 registres. L'ensemble des ces registres est appelé ruche ou hive en anglais (d'où le HKEY pour Hive Key). Powershell naviguera dans la ruche avec le paramètre -Path dont la valeur sera de type Registre:\Chemin. Les valeurs pour Registre ne sont rien d'autres que les initiales des différents registres :
- HKEY_CLASSES_ROOT = HKCR
- HKEY_CURRENT_USER = HKCU
- HKEY_LOCAL_MACHINE = HKLM
- HKEY_USERS = HKU
- HKEY_CURRENT_CONFIG = HKCC
- HKEY_PERFORMANCE_DATA = HKPD
Gestion des clés
Les clés sont gérées avec les commandes de type Verb-Item. La commande Get-ChildItem peut aussi avoir sont utilité.
- Référence Microsoft : New-Item
- Référence Microsoft : Get-Item
- Référence Microsoft : Rename-Item
- Référence Microsoft : Copy-Item
- Référence Microsoft : Move-Item
- Référence Microsoft : Remove-Item
- Référence Microsoft : Get-ChildItem
Créer une clé
Pour créer la clé Test dans le registre HKEY_LOCAL_MACHINE et en tant que sous-clé de SOFTWARE\ShyrkaSystem, on utilise la commande New-Item :
New-Item -Path "HKLM:\SOFTWARE\ShyrkaSystem\Test"
On pourrait aussi utiliser le paramètre -Value afin de définir la valeur par défaut des propriétés de la clé, par exemple :
New-Item -Path "HKLM:\SOFTWARE\ShyrkaSystem\Test" -Value "valeur test"
La console nous renvoie alors :
Hive: HKEY_LOCAL_MACHINE\SOFTWARE\ShyrkaSystem Name Property ---- -------- Test (default) : valeur test
Lire une clé
Après avoir créé des propriétés à notre nouvelle clé (voir plus bas) pour les besoins de la démonstration, on peut lire le contenu d'une clé avec la commande Get-Item suive de -Path pour indiquer son chemin :
Get-Item -Path "HKLM:\SOFTWARE\ShyrkaSystem\Test"
La console nous renvois alors :
Name Property
---- --------
Test Property1 : Value1
Property2 : 10
Renommer une clé
Renommer une clé est possible grâce à la commande Rename-Item suivi de -Path pour indiquer son chemin et -NewName pour son nouveau nom :
Rename-Item -Path "HKLM:\SOFTWARE\ShyrkaSystem\Test" -NewName "Test2"
Aucun retour console.
Copier une clé
La copie de clés s'obtient via la commande Copy-Item. On utilisera le paramètre -Path pour indiquer le chemin de la source et -Destination pour le chemin et le nom de la cible :
Copy-Item -Path "HKLM:\SOFTWARE\ShyrkaSystem\Test" -Destination "HKLM:\SOFTWARE\ShyrkaSystem\Test2"
Aucun retour console.
Déplacer une clé
Utiliser la commande Move-Item permet de déplacer une clé définie par son chemin (-Path) vers une autre chemin (-Destination) :
Move-Item -Path "HKLM:\SOFTWARE\ShyrkaSystem\Test2" -Destination "HKLM:\SOFTWARE\ShyrkaSystemTemp"
Aucun retour console.
Supprimer une clé
La suppression d'un clé passe par la commande Remove-Item associé au paramètre -Path pour indiquer le chemin de la clé à supprimer. On devra y ajouter -Recurse pour supprimer les sous-clés :
Remove-Item -Path "HKLM:\SOFTWARE\ShyrkaSystemTemp" -Recurse
Aucun retour console.
Lister les clés
A l'instar de Get-Item qui lit les propriétés d'une clé, la commande Get-ChildItem lira pour une clé définie par -Path, l'ensemble des propriétés de chaque sous-clé :
Get-ChildItem -Path "HKLM:\SOFTWARE\ShyrkaSystem"
Ce qui renvoie dans la console :
Name Property
---- --------
Test Property1 : Value1
Property2 : 10
Test2 QW : 5411
Alors que :
Get-Item -Path "HKLM:\SOFTWARE\ShyrkaSystem"
Renvoie :
Name Property ---- -------- ShyrkaSystem bin : 0
Gestion des propriétés
Les propriétés sont gérées avec les commandes de type Verb-ItemProperty.
- Référence Microsoft : New-ItemProperty
- Référence Microsoft : Get-ItemProperty
- Référence Microsoft : Set-ItemProperty
- Référence Microsoft : Rename-ItemProperty
- Référence Microsoft : Clear-ItemProperty
- Référence Microsoft : Copy-ItemProperty
- Référence Microsoft : Move-ItemProperty
- Référence Microsoft : Remove-ItemProperty
Les types de propriétés
Les propriétés sont définies selon des types bien précis qui détermine la nature de sa valeur :
- String (REG_SZ) : la valeur est une chaîne de caractères qui se termine par le caractère
null. - Binary (REG_BINARY) : la valeur contient des données binaires.
- DWord (REG_DWORD) : la valeur contient un nombre binaire de 32bits.
- QWord (REG_QWORD) : la valeur contient un nombre binaire de 64bits.
- MultiString (REG_MULTI_SZ) : la valeur est un tableau de plusieurs chaînes de caractères terminé par deux caractères
null. - ExpandString (REG_EXPAND-SZ) : comme
Stringà la différence que la chaîne peut contenir des références à des variables d'environnement qui seront traduites lors de la récupération de la valeur de la propriété.
- Réf : Microsoft
Créer une propriété
Pour créer une propriété, la commande New-itemProperty sera utilisée en indiquant le chemin avec le paramètre -Path, le nom avec -Name et la valeur avec -Value. Cela nous donne :
New-ItemProperty -Path "HKLM:\SOFTWARE\ShyrkaSystem\Test" -Name "Property1" -Value "Test1" -PropertyType String
Ce qui renvoie dans la console :
Property1 : Test1 PSPath : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWARE\ShyrkaSystem\Test PSParentPath : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWARE\ShyrkaSystem PSChildName : Test PSDrive : HKLM PSProvider : Microsoft.PowerShell.Core\Registry
Lire une propriété
La commande Get-ItemProperty lit les informations de la proriété indiquée par -Name au chemin défini par -Path.
Get-ItemProperty -Path "HKLM:\SOFTWARE\ShyrkaSystem\Test" -Name "Property1"
Ce qui nous renvoie :
Property1 : Test1 PSPath : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWARE\ShyrkaSystem\Test PSParentPath : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWARE\ShyrkaSystem PSChildName : Test PSDrive : HKLM PSProvider : Microsoft.PowerShell.Core\Registry
On remarque qu'une des "propriétés" de cette propriété est elle-même et qu'elle contient sa valeur. C'est donc en l'appelant elle-même que l'on peut obtenir la valeur d'une propriété :
(Get-ItemProperty -Path "HKLM:\SOFTWARE\ShyrkaSystem\Test" -Name "Property1").Property1
Ce qui nous renvoie :
Test1
Modifier la valeur d'une propriété
Pour modifier la valeur d'une propriété, on utilise la commande Set-ItemProperty. Après avoir indiqué les informations -Path et -Name, on utilisera le paramètre -Value pour indiquer la nouvelle valeur :
Set-ItemProperty -Path "HKLM:\SOFTWARE\ShyrkaSystem\Test" -Name "Property1" -Value "Test2"
Aucun retour console.
Renommer une propriété
Rename-ItemProperty permet de renommer une propriété. Là aussi, on utilisera -Path et -Name pour définir la propriété cible puis -NewName pour le nouveau nom :
Rename-ItemProperty -Path "HKLM:\SOFTWARE\ShyrkaSystem\Test" -Name "Property1" -NewName "Property2"
Aucun retour console.
Supprimer la valeur d'une propriété
Pour supprimer la valeur d'une propriété sans supprimer la propriété en question, la commande Clear-ItemProperty avec les paramètres -Path et -Name est là pour ça :
Clear-ItemProperty -Path "HKLM:\SOFTWARE\ShyrkaSystem\Test" -Name "Property2"
Aucun retour console.
Copier une propriété
Copy-ItemProperty permet de copier une propriété (-Name) situé dans une clé (-Path) vers une nouvelle clé (-Destination) :
Copy-ItemProperty -Path "HKLM:\SOFTWARE\ShyrkaSystem\Test" -Name "Property2" -Destination "HKLM:\SOFTWARE\ShyrkaSystem\Test2"
On ne peut pas se servir de cette commande pour dupliquer les propriétés dans une même clé. Aucun retour console.
Déplacer une propriété
Cette fois-ci, pour déplacer une propriété (-Name) de la clé d'origine (-Path) vers une nouvelle clé (-Destination), Move-ItemProperty sera utilisé :
Move-ItemProperty -Path "HKLM:\SOFTWARE\ShyrkaSystem\Test2" -Name "Property2" -Destination "HKLM:\SOFTWARE\ShyrkaSystem\Test3"
Aucun retour console.
Supprimer une propriété
Finalement, pour supprimer une propriété, on utilisera Remove-ItemProperty suivi des paramètre -Path et -Name :
Remove-ItemProperty -Path "HKLM:\SOFTWARE\ShyrkaSystem\Test" -Name "Property2"
Aucun retour console.
— Nicolas THOREZ 2019/05/20 20:35
Discussion