Dado que las claves del Registro son elementos de las unidades de Windows PowerShell, trabajar con ellas es muy parecido a trabajar con archivos y carpetas. Una diferencia fundamental es que todo elemento de una unidad de Windows PowerShell basada en el Registro es un contenedor, como lo es una carpeta en una unidad del sistema de archivos. No obstante, las entradas del Registro y sus valores asociados son propiedades de los elementos, no elementos distintos.

Mostrar todas las subclaves de una clave del Registro

Puede mostrar todos los elementos incluidos directamente en una clave del Registro usando Get-ChildItem. Agregue el parámetro opcional Force para mostrar los elementos ocultos o del sistema. Por ejemplo, este comando muestra los elementos incluidos directamente en la unidad HKCU: de Windows PowerShell, que corresponde al subárbol del Registro HKEY_CURRENT_USER:

PS> Get-ChildItem -Path hkcu:\


   Hive: Microsoft.PowerShell.Core\Registry::HKEY_CURRENT_USER

SKC  VC Name                           Property
---  -- ----                           --------
  2   0 AppEvents                      {}
  7  33 Console                        {ColorTable00, ColorTable01, ColorTab...
 25   1 Control Panel                  {Opened}
  0   5 Environment                    {APR_ICONV_PATH, INCLUDE, LIB, TEMP...}
  1   7 Identities                     {Last Username, Last User ...
  4   0 Keyboard Layout                {}
...

Se trata de las claves de nivel superior mostradas en HKEY_CURRENT_USER en el Editor del Registro (Regedit.exe).

También puede especificar esta ruta de acceso al Registro especificando el nombre del proveedor del Registro seguido de "::". El nombre completo del proveedor del Registro es Microsoft.PowerShell.Core\Registry, pero se puede abreviar como Registry. Cualquiera de los siguientes comandos enumerará el contenido que hay directamente en la unidad HKCU:

Get-ChildItem -Path Registry::HKEY_CURRENT_USER
Get-ChildItem -Path Microsoft.PowerShell.Core\Registry::HKEY_CURRENT_USER
Get-ChildItem -Path Registry::HKCU
Get-ChildItem -Path Microsoft.PowerShell.Core\Registry::HKCU
Get-ChildItem HKCU:

Estos comandos enumeran solo los elementos contenidos directamente, de forma muy parecida al comando DIR de Cmd.exe o ls de un shell de UNIX. Para que se muestren los elementos contenidos, debe especificar el parámetro Recurse. Para enumerar todas las claves del Registro en la unidad HKCU, utilice el siguiente comando (esta operación puede tardar mucho tiempo en completarse):

Get-ChildItem -Path hkcu:\ -Recurse

Get-ChildItem permite aplicar filtros complejos mediante los parámetros Path, Filter, Include y Exclude, pero estos parámetros se basan normalmente solo en el nombre. Puede aplicar filtros complejos basándose en otras propiedades de los elementos utilizando el cmdlet Where-Object. El siguiente comando busca todas las claves incluidas en HKCU:\Software que tengan una subclave como máximo y que tengan exactamente cuatro valores:

Get-ChildItem -Path HKCU:\Software -Recurse | Where-Object -FilterScript {($_.SubKeyCount -le 1) -and ($_.ValueCount -eq 4) }

Copiar claves

Las operaciones de copia se realizan con Copy-Item. El siguiente comando copia HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion y todas sus propiedades a HKCU:\, creando una nueva clave llamada "CurrentVersion":

Copy-Item -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion' -Destination hkcu:

Si examina esta nueva clave en el Editor del Registro o usando Get-ChildItem, observará que no hay copias de las subclaves en la nueva ubicación. Para copiar todo el contenido de un contenedor, debe especificar también el parámetro Recurse. Para aplicar el comando de copia anterior de forma recursiva, utilice este comando:

Copy-Item -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion' -Destination hkcu: -Recurse

También puede usar otras herramientas de las que ya dispone para realizar copias del sistema de archivos. Cualquier herramienta de modificación del Registro (entre ellas, reg.exe, regini.exe y regedit.exe) y objetos COM que admitan la modificación del Registro (como WScript.Shell y la clase StdRegProv de WMI) se pueden utilizar en Windows PowerShell.

Crear claves

La creación de nuevas claves en el Registro es una operación más sencilla que crear nuevos elementos en un sistema de archivos. Dado que todas las claves del Registro son contenedores, no es necesario especificar el tipo de elemento; basta con proporcionar una ruta de acceso explícita, como:

New-Item -Path hkcu:\software\_DeleteMe

También puede utilizar una ruta basada en un proveedor para especificar una clave:

New-Item -Path Registry::HKCU\_DeleteMe

Eliminar claves

La eliminación de elementos es prácticamente igual para todos los proveedores. Los siguientes comandos quitan elementos de forma silenciosa:

Remove-Item -Path hkcu:\Software\_DeleteMe
Remove-Item -Path 'hkcu:\key with spaces in the name'

Eliminar todas las claves contenidas en una clave específica

Puede quitar elementos contenidos usando Remove-Item, pero se le pedirá que confirme la eliminación si el elemento contiene algo más. Por ejemplo, si intentamos eliminar la subclave HKCU:\CurrentVersion que creamos, podremos ver lo siguiente:

Remove-Item -Path hkcu:\CurrentVersion

Confirm
The item at HKCU:\CurrentVersion\AdminDebug has children and the -recurse
parameter was not specified. If you continue, all children will be removed with
 the item. Are you sure you want to continue?
[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help
(default is "Y"):

Para eliminar elementos contenidos sin pedir confirmación, especifique el parámetro -Recurse:

Remove-Item -Path HKCU:\CurrentVersion -Recurse

Si desea quitar todos los elementos incluidos en HKCU:\CurrentVersion, pero no HKCU:\CurrentVersion, puede utilizar:

Remove-Item -Path HKCU:\CurrentVersion\* -Recurse




Tabla de contenido