Modifier le registre via Powershell

Petit récapitulatif des commandes Powershell permettant d’éditer le registre:

Introduction

Dans l’ensemble des cmdlets présentés ici, le chemin (Path) attendu est sous la forme suivante: HKLM:CheminVersLaCle.

Les 6 registres sont:

  • HKCR pour HKEY_CLASSES_ROOT
  • HKCU pour HKEY_CURRENT_USER
  • HKLM pour HKEY_LOCAL_MACHINE (le plus fréquent)
  • HKU pour HKEY_USERS
  • HKCC pour HKEY_CURRENT_CONFIG
  • HKPD pour HKEY_PERFORMANCE_DATA

Lire une clé

On utilisera le cmdlet Get-Item pour lire une seule clé:

Get-Item HKLM:\SYSTEM\CurrentControlSet\services\SNMP\Parameters\RFC1156Agent

Le nom de la clé et ses valeurs sont retournées:

    Hive: HKEY_LOCAL_MACHINE:\SYSTEM\CurrentControlSet\services\SNMP\Parameters

SKC  VC Name                           Property
---  -- ----                           --------
  0   3 RFC1156Agent                   {sysServices, sysLocation, sysContact}

Lire une valeur

On utilisera le cmdlet Get-ItemProperty pour lire une valeur:

Get-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\services\SNMP\Parameters\RFC1156Agent -Name sysContact

Plusieurs données vont être retournés dont notre valeur:

PSPath       : Microsoft.PowerShell.CoreRegistry::HKEY_LOCAL_MACHINE:\SYSTEM\CurrentControlSet\services\SNMP\Parameters\RFC1156Agent
               RFC1156Agent
PSParentPath : Microsoft.PowerShell.CoreRegistry::HKEY_LOCAL_MACHINE:\SYSTEM\CurrentControlSet\services\SNMP\Parameters\RFC1156Agent
PSChildName  : RFC1156Agent
PSDrive      : HKLM
PSProvider   : Microsoft.PowerShell.CoreRegistry
sysContact   : demo@example.com

Pour récupérer la valeur elle-même, on utilisera:

(Get-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\services\SNMP\Parameters\RFC1156Agent -Name sysContact).sysContact

Gestion des clés

Créer une nouvelle clé

On utilisera le cmdlet New-Item en lui passant le chemin:

New-Item -Path HKLM:\SYSTEM\CurrentControlSet\services\SNMP\Parameters\RFC1156Agent\test

On peut également lui passer un argument -Value pour la valeur par défaut de la clé.

Définir la valeur (par défaut) d’une clé

On utilisera le cmdlet Set-Item en lui passant le chemin et la nouvelle valeur:

et-Item -Path HKLM:\SYSTEM\CurrentControlSet\services\SNMP\Parameters\RFC1156Agent\test -Value foo

Renommer une clé

On utilisera le cmdlet Rename-Item en lui passant le chemin et la nouvelle valeur:

Rename-Item -Path HKLM:\SYSTEM\CurrentControlSet\services\SNMP\Parameters\RFC1156Agent\test -NewName foo

Supprimer une clé

On utilisera le cmdlet Remove-Item en lui passant le chemin:

Remove-Item -Path HKLM:\SYSTEM\CurrentControlSet\services\SNMP\Parameters\RFC1156Agent\test

Gestion des propriétés

Les types supportés sont:

  • String
  • ExpandString
  • Binary
  • DWord
  • Multistring
  • QWord

Créer une nouvelle propriété

On utilisera le cmdlet New-ItemProperty en lui passant le chemin, le type, le nom et la valeur:

New-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\services\SNMP\Parameters\RFC1156Agent -ItemType String -Name foo -Value bar

Définir la valeur d’une propriété

On utilisera le cmdlet Set-ItemProperty en lui passant le chemin et la nouvelle valeur:

Set-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\services\SNMP\Parameters\RFC1156Agent -Name foo -Value bar

Renommer une propriété

On utilisera le cmdlet Rename-ItemProperty en lui passant le chemin et le nouveau nom:

Rename-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\services\SNMP\Parameters\RFC1156Agent -Name foo -NewName bar

Supprimer une propriété

On utilisera le cmdlet Remove-ItemProperty en lui passant le chemin:

Remove-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\services\SNMP\Parameters\RFC1156Agent -Name foo

2 réflexions sur « Modifier le registre via Powershell »

  1. Bonjour ,
    j’essaye de créer une clé de registre sur un poste a distance via un script PowerShell,mais celle ci ce crée uniquement sur mon poste local.Voici le boit du script

    Enable-PSRemoting -Force
    Set-Service -Name « remoteregistry » -StartupType automatic -ComputerName $Poste
    Get-Service -Name « remoteregistry » -ComputerName $Poste | Set-Service -Status Running
    Push-Location
    Set-Location HKLM:Software
    Test-Path .SoftwareHSGTest
    New-Item -Path HKLM:Software -Name HSGTest -Value « my value Test »
    Pop-Location

    J'aime

    1. Bonjour,

      Puisque PowerShell Remote est activé, autant en profiter :

      Invoke-Command -Credential (Get-Credential) -ComputerName $Poste -ScriptBlock {
      Set-Location HKLM:Software
      if ((Test-Path .HSGTest) -eq $False) { New-Item -Name HSGTest -Value "my value test" }
      }

      Si vous souhaitez absolument utiliser Remote Registry avec Powershell, il faut passer par [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey.
      Personnellement je n’en vois pas l’intérêt, on trouve plusieurs exemples sur Internet.

      J'aime

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s