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

3 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

  2. Bonjour,
    je suis nouveau sur power shell et je ne le maîtrise pas bien pourtant pour un travail je dois réaliser un script pour automatiser le paramétrage avancé d’une carte wi-fi à partir de la base de registre
    pouvez vous me mettre sur une piste ?

    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