Registre
Partie 1 - Exploration
Dans cette partie, essayez les manipulations suivantes à l'aide d'un script ou de la ligne de commande. Après chaque étape, regardez ce qui se passe dans la base de registre à l'aide de Regedit.
a) Sur l'ordinateur du laboratoire, à l'aide de PowerShell seulement, obtenez le chemin du fichier affiché comme papier peint. Mettez-le dans une variable. Voici l'endroit où ce chemin est stocké:
- Chemin de la clé:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System - Nom de la valeur:
Wallpaper
$Path = "HKCU:\Software\Microsoft\Windows\CurrentVersion\Policies\System"
$ValueName = "Wallpaper"
$WallpaperPath = Get-ItemPropertyValue -Path $Path -Name $ValueName
$WallpaperPath
Il faut faire attention à la syntaxe de PowerShell. Dans le registre, les racines s'écrivent HKEY_LOCAL_MACHINE\ et HKEY_CURRENT_USER\, mais sous PowerShell, il faut utiliser les PSDrives. Les racines s'écrivent donc HKLM:\ et HKCU:\. Par conséquent, la syntaxe suivante est incorrecte et lèvera une erreur:
$Path = "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System"
$ValueName = "Wallpaper"
$WallpaperPath = Get-ItemPropertyValue -Path $Path -Name $ValueName # Erreur!
b) Vérifiez si la clé HKEY_CURRENT_USER\SOFTWARE\Automatisation existe.
Test-Path -Path "HKCU:\SOFTWARE\Automatisation"
c) Créez une clé de registre nommée Automatisation à l'emplacement suivant dans la base de registre: HKEY_CURRENT_USER\SOFTWARE. Puis testez à nouveau l'existence de la clé.
$Path = "HKCU:\SOFTWARE\Automatisation"
$NewKey = New-Item -Path $Path -Force
Test-Path -Path $Path
d) Dans la clé HKEY_CURRENT_USER\SOFTWARE\Automatisation, créez une nouvelle valeur Papier peint de type String ayant pour valeur le chemin du papier peint obtenu à la question précédente:
$NewKey | New-ItemProperty -Name "Papier peint" -PropertyType "String" -Value $WallpaperPath
e) Trouvez une évaluation booléenne pour savoir si, vrai ou faux, la valeur Nombre existe dans la clé HKEY_CURRENT_USER\SOFTWARE\Automatisation:
$Path = "HKCU:\SOFTWARE\Automatisation"
$ValueName = "Nombre"
[bool](Get-ItemProperty -Path $Path -Name $ValueName -ErrorAction Ignore)
f) Dans la clé HKEY_CURRENT_USER\SOFTWARE\Automatisation, créez une entrée Nombre de type DWord ayant pour valeur 0.
$NewValueSplat = @{
Path = "HKCU:\SOFTWARE\Automatisation"
Name = "Nombre"
PropertyType = "Dword"
Value = 0
}
New-ItemProperty @NewValueSplat -Force | Out-Null
g) Obtenez la valeur de Nombre à partir du registre et affecter cette valeur dans une variable:
$NombreSplat = @{
Path = "HKCU:\SOFTWARE\Automatisation"
Name = "Nombre"
}
$Nombre = Get-ItemPropertyValue @NombreSplat
h) Incrémentez la valeur Nombre (lui ajouter 1) et enregistrez cette valeur à la place de l'ancienne dans le registre.
$Nombre++
Set-ItemProperty @NombreSplat -Value $Nombre
i) Effacer la valeur Nombre de la clé HKEY_CURRENT_USER\SOFTWARE\Automatisation.
Remove-ItemProperty @NombreSplat
j) Effacer la clé HKEY_CURRENT_USER\SOFTWARE\Automatisation ainsi que tout son contenu.
Remove-Item -Path "HKCU:\SOFTWARE\Automatisation" -Force
Partie 2 - Défi
Faites un script qui compte le nombre de fois qu'il est exécuté. Il gardera le compte dans une valeur de registre à cet emplacement:
- Chemin de la clé:
HKEY_CURRENT_USER\SOFTWARE\Automatisation - Nom de la valeur:
Compteur - Type de la valeur:
DWord
La première fois que le script est lancé, puisque la valeur de registre n'existe pas encore, il devra la créer et l'initialiser à la valeur 1. Puis, la deuxième fois que le script roule, la valeur est incrémentée à 2. Puis à 3. Et ainsi de suite.
Lorsque le paramètre -Reset est appelé, le script remet le compteur à zéro.
Voici un exemple d'exécution:
PS C:\EspaceLabo> .\compteur.ps1
J'ai été exécuté 1 fois!
PS C:\EspaceLabo> .\compteur.ps1
J'ai été exécuté 2 fois!
PS C:\EspaceLabo> .\compteur.ps1
J'ai été exécuté 3 fois!
PS C:\EspaceLabo> .\compteur.ps1 -Reset
Compteur réinitialisé!
PS C:\EspaceLabo> .\compteur.ps1
J'ai été exécuté 1 fois!
Voici ce que ça devrait donner dans Regedit:
