Création — Nicolas THOREZ 2019/05/20 20:35
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.
Windows organise son registre comme une arborescence de fichier :
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.
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 :
Les clés sont gérées avec les commandes de type Verb-Item. La commande Get-ChildItem peut aussi avoir son utilité.
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
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
Chaque clé est créée avec une valeur par défaut. Si cette valeur n'est pas définie à la création de la clé ou si ou souhaite la modifier, on peu faire appel à la commande Set-Item suivi des paramètres -Path pour indiquer le chemin de la clé et -Value pour définir la nouvelle valeur :
Set-Item -Path "HKLM:\SOFTWARE\ShyrkaSystem\Test" -Value "DefaultValue"
Aucun retour console.
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.
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.
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.
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.
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
Les propriétés sont gérées avec les commandes de type Verb-ItemProperty.
Les propriétés sont définies selon des types bien précis qui détermine la nature de sa valeur :
null.null.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é.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
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
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.
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.
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.
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.
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.
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.