Dado que las entradas del Registro son propiedades de claves y, como tales, no se pueden examinar directamente, hay que adoptar un enfoque ligeramente distinto para trabajar con ellas.

Mostrar las entradas del Registro

Hay muchas maneras distintas de examinar entradas del Registro. La manera más sencilla es obtener los nombres de propiedades asociados a una clave. Por ejemplo, para ver los nombres de las entradas en la clave del Registro HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion, utilice Get-Item. Las claves del Registro tienen una propiedad con el nombre genérico "Property", que muestra una lista de las entradas del Registro que contiene la clave. El comando siguiente selecciona la propiedad Property y expande los elementos para que se muestren en una lista:

PS> Get-Item -Path Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion | Select-Object -ExpandProperty Property
DevicePath
MediaPathUnexpanded
ProgramFilesDir
CommonFilesDir
ProductId

Para facilitar la lectura de las entradas del Registro, utilice Get-ItemProperty:

PS> Get-ItemProperty -Path Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion


PSPath              : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SO
                      FTWARE\Microsoft\Windows\CurrentVersion
PSParentPath        : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SO
                      FTWARE\Microsoft\Windows
PSChildName         : CurrentVersion
PSDrive             : HKLM
PSProvider          : Microsoft.PowerShell.Core\Registry
DevicePath          : C:\WINDOWS\inf
MediaPathUnexpanded : C:\WINDOWS\Media
ProgramFilesDir     : C:\Program Files
CommonFilesDir      : C:\Program Files\Common Files
ProductId           : 76487-338-1167776-22465
WallPaperDir        : C:\WINDOWS\Web\Wallpaper
MediaPath           : C:\WINDOWS\Media
ProgramFilesPath    : C:\Program Files
PF_AccessoriesName  : Accessories
(default)           :

Todas las propiedades de la clave relativas a Windows PowerShell tienen el prefijo "PS", como PSPath, PSParentPath, PSChildName y PSProvider.

Puede usar la notación "." para hacer referencia a la ubicación actual. Puede usar Set-Location para cambiar primero al contenedor del Registro CurrentVersion:

Set-Location -Path Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion

Como alternativa, puede utilizar la unidad HKLM de PowerShell integrada con Set-Location:

Set-Location -Path hklm:\SOFTWARE\Microsoft\Windows\CurrentVersion

Después, puede usar la notación "." para la ubicación actual y crear una lista de las propiedades sin especificar una ruta de acceso completa:

PS> Get-ItemProperty -Path .
...
DevicePath          : C:\WINDOWS\inf
MediaPathUnexpanded : C:\WINDOWS\Media
ProgramFilesDir     : C:\Program Files
...

Las rutas de acceso se pueden expandir de la misma manera que en el sistema de archivos; por tanto, desde esta ubicación puede obtener la lista de ItemProperty para HKLM:\SOFTWARE\Microsoft\Windows\Help usando Get-ItemProperty -Path ..\Help.

Obtener una sola entrada del Registro

Si desea recuperar una entrada específica de una clave del Registro, puede aplicar uno de varios enfoques posibles. En este ejemplo se busca el valor de DevicePath en HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion.

Con Get-ItemProperty, utilice el parámetro Path para especificar el nombre de la clave y el parámetro Name para especificar el nombre de la entrada DevicePath.

PS> Get-ItemProperty -Path HKLM:\Software\Microsoft\Windows\CurrentVersion -Name DevicePath


PSPath       : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\Software\
               Microsoft\Windows\CurrentVersion
PSParentPath : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\Software\
               Microsoft\Windows
PSChildName  : CurrentVersion
PSDrive      : HKLM
PSProvider   : Microsoft.PowerShell.Core\Registry
DevicePath   : C:\WINDOWS\inf

Este comando devuelve las propiedades estándar de Windows PowerShell, así como la propiedad DevicePath.

Nota:

Aunque Get-ItemProperty tiene los parámetros Filter, Include y Exclude, no se pueden utilizar para filtrar por nombre de propiedad. Estos parámetros hacen referencia a claves del Registro (que son rutas de acceso a elementos) y no a entradas del Registro (que son propiedades de elementos).

Otra opción es utilizar la herramienta Reg.exe de la línea de comandos. Para obtener Ayuda acerca de reg.exe, escriba reg.exe /? en el símbolo del sistema. Para buscar la entrada DevicePath, utilice reg.exe como se muestra en el siguiente comando:

PS> reg query HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion /v DevicePath

! REG.EXE VERSION 3.0

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion
    DevicePath  REG_EXPAND_SZ   %SystemRoot%\inf

También puede usar el objeto WshShell COM para buscar algunas entradas del Registro, aunque este método no se puede usar con datos binarios de gran tamaño ni con nombres de entradas del Registro que contengan caracteres como "\". Anexe el nombre de la propiedad a la ruta de acceso al elemento con un separador \:

PS> (New-Object -ComObject WScript.Shell).RegRead("HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\DevicePath")
%SystemRoot%\inf

Crear nuevas entradas del Registro

Para agregar una nueva entrada denominada "PowerShellPath" a la clave CurrentVersion, utilice New-ItemProperty con la ruta de acceso a la clave, el nombre de la entrada y el valor de la entrada. En este ejemplo, vamos a utilizar el valor de la variable $PSHome de Windows PowerShell, que almacena la ruta de acceso al directorio de instalación de Windows PowerShell.

Puede agregar la nueva entrada a la clave con el siguiente comando, que también devuelve información acerca de la nueva entrada:

PS> New-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion -Name PowerShellPath -PropertyType String -Value $PSHome


PSPath         : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWAR
                 E\Microsoft\Windows\CurrentVersion
PSParentPath   : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWAR
                 E\Microsoft\Windows
PSChildName    : CurrentVersion
PSDrive        : HKLM
PSProvider     : Microsoft.PowerShell.Core\Registry
PowerShellPath : C:\Program Files\Windows PowerShell\v1.0

El valor de PropertyType debe ser el nombre de un miembro de enumeración de Microsoft.Win32.RegistryValueKind de los que se muestran en la tabla siguiente:

Valor de PropertyType Significado

Binary

Datos binarios

DWord

Número de tipo UInt32 válido

ExpandString

Cadena que puede contener variables de entorno expandidas dinámicamente

MultiString

Cadena de varias líneas

String

Cualquier valor de cadena

QWord

8 bytes de datos binarios

Nota:

Para agregar una entrada del Registro a varias ubicaciones, debe especificar una matriz de valores para el parámetro Path:

New-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion, HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion -Name PowerShellPath -PropertyType String -Value $PSHome

También puede sobrescribir el valor de una entrada del Registro que ya existe agregando el parámetro Force a cualquier comando New-ItemProperty.

Cambiar el nombre de entradas del Registro

Para cambiar el nombre de la entrada PowerShellPath a "PSHome", utilice Rename-ItemProperty:

Rename-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion -Name PowerShellPath -NewName PSHome

Para mostrar el valor con el nuevo nombre, agregue el parámetro PassThru al comando.

Rename-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion -Name PowerShellPath -NewName PSHome -passthru

Eliminar entradas del Registro

Para eliminar las entradas del Registro PSHome y PowerShellPath, utilice Remove-ItemProperty:

Remove-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion -Name PSHome
Remove-ItemProperty -Path HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion -Name PowerShellPath




Tabla de contenido