Obtener el valor de una clave de registro mediante PowerShell

  1. ¿Qué es una clave de registro?
  2. Copia de seguridad de claves de registro en PowerShell
  3. Obtener un valor de una clave de registro mediante el cmdlet Get-ItemProperty en PowerShell
  4. Obtener un valor de una clave de registro mediante el cmdlet Get-ItemPropertyValue en PowerShell
Obtener el valor de una clave de registro mediante PowerShell

Hay casos en los que corregir errores, ajustar las funciones de Windows o desinstalar completamente un software o un producto requiere que edite el registro de Windows.

Si bien usar el Editor del Registro puede ser conveniente, aún puede ocurrir un error cuando no tenemos el cuidado suficiente. La edición del registro es muy delicada y su sistema local depende de ello.

Este artículo le mostrará cómo obtener valores clave de registro de forma segura con Windows PowerShell.

¿Qué es una clave de registro?

Una clave de registro se puede considerar un poco como una carpeta de archivos estructurada, pero solo existe dentro del Registro de Windows.

Además, las claves de registro también pueden contener valores de registro, al igual que las carpetas contienen archivos. Las claves de registro también pueden incluir otras claves de registro, generalmente denominadas subclaves.

Como se mencionó, el Registro de Windows está estructurado, con las claves de registro superiores denominadas colmenas de registro. Estas se consideran claves de registro especiales con permisos especiales, pero aún tienen la misma función esencial que una clave de registro estándar.

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft

Si tomamos el ejemplo anterior, HKEY_LOCAL_MACHINE o HKLM para abreviar, es la parte superior de la ruta del registro. La clave de registro SOFTWARE la sucede y, como se mencionó, las claves de registro pueden contener más claves que llamamos subclaves como Microsoft.

Copia de seguridad de claves de registro en PowerShell

Es aconsejable hacer una copia de seguridad de nuestro registro antes de realizar cambios. Como se mencionó, cualquier cambio accidental dentro del registro puede causar un error en sus archivos, software o, lo que es peor, en todo el sistema operativo.

Sin embargo, con una copia de las claves que está cambiando, puede sentirse cómodo sabiendo que puede revertir cualquier cambio que pueda causar problemas en su sistema operativo.

Podemos usar los comandos heredados reg export para hacer una copia de seguridad rápida de su registro. Por ejemplo, la siguiente sintaxis hará una copia de seguridad de todo el registro HKLM.

reg export HKLM C:\RegBack\HKLM.Reg /y

Sus claves de registro respaldadas se exportarán en un formato de archivo .REG. Por lo tanto, puede restaurar rápidamente las claves de registro respaldadas haciendo doble clic en el archivo de registro y siguiendo las indicaciones.

Obtener un valor de una clave de registro mediante el cmdlet Get-ItemProperty en PowerShell

El Get-ItemProperty es un cmdlet de PowerShell que se usa para devolver las entradas del registro en un formato más legible que su comando relativo Get-Item. También podemos obtener el valor de una clave de registro específica utilizando el cmdlet Get-ItemProperty.

Código de ejemplo:

$registryPath = "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion"

Get-ItemProperty -Path $registryPath -Name ProgramFilesDir

Producción :

ProgramFilesDir : C:\Program Files
PSPath          : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Micr
                  osoft\Windows\CurrentVersion
PSParentPath    : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Micr
                  osoft\Windows
PSChildName     : CurrentVersion
PSDrive         : HKLM
PSProvider      : Microsoft.PowerShell.Core\Registry
Nota
asegúrese de incluir la ruta de registro entre comillas dobles ("") ya que algunas rutas de registro tienen espacios en ellas. Encerrar la ruta entre comillas dobles tomará la expresión literal de dicha ruta y no dará como resultado un error.

El comando crea un objeto PSCustomObject con PsPath, PsParentPath, PsChildname, PSDrive, PSProvider y otra propiedad que lleva el nombre del valor clave.

Entonces, para generar solo el valor real de la clave de registro, podemos llamar a la propiedad del nombre del valor de la clave en nuestro script.

Código de ejemplo:

$registryPath = "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion"

$keyValue = Get-ItemProperty -Path $registryPath -Name ProgramFilesDir

$keyValue.ProgramFilesDir

Producción :

C:\Program Files

El comando Get-ItemProperty funciona en las versiones 2 a 5 de PowerShell. Sin embargo, en Windows PowerShell 5, Microsoft introdujo un nuevo cmdlet que simplifica mucho la impresión de claves de registro en la línea de comandos.

Obtener un valor de una clave de registro mediante el cmdlet Get-ItemPropertyValue en PowerShell

Como se mencionó, el cmdlet Get-ItemPropertyValue se introdujo en la versión 5 de Windows PowerShell para abordar la consulta de obtener el valor de las claves de registro de una manera mucho más corta y sencilla.

El cmdlet solo necesita dos parámetros para funcionar: la ruta del archivo de registro y la clave de registro que debe consultarse para obtener un valor.

Código de ejemplo:

Get-ItemPropertyValue 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion' 'ProgramFilesDir'

Producción :

C:\Program Files
Marion Paul Kenneth Mendoza avatar Marion Paul Kenneth Mendoza avatar

Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.

LinkedIn

Artículo relacionado - PowerShell Registry