Compartir a través de


about_Registry_Provider

Nombre del proveedor

Registro

Unidades

HKLM:, HKCU:

Funcionalidades

ShouldProcess, UseTransactions

Descripción breve

Proporciona acceso a las claves, entradas y valores del Registro en PowerShell.

Descripción detallada

El proveedor del Registro de PowerShell le permite obtener, agregar, cambiar, borrar y eliminar claves del Registro, entradas y valores en PowerShell.

Las unidades del Registro son un espacio de nombres jerárquico que contiene las claves del Registro y las subclaves del equipo. Las entradas y valores del Registro no son componentes de esa jerarquía. En su lugar, son propiedades de cada una de las claves.

El proveedor del Registro admite los siguientes cmdlets:

Tipos expuestos por este proveedor

El proveedor del Registro devuelve datos del Registro en uno de los dos tipos:

El proveedor del Registro expone su almacén de datos como dos unidades predeterminadas.

  • HKLM: se asigna al subárbol del HKEY_LOCAL_MACHINE Registro
  • HKCU: se asigna al subárbol del HKEY_CURRENT_USER Registro

Para trabajar con el Registro, puede cambiar la ubicación a la HKLM: unidad mediante el siguiente comando.

Set-Location HKLM:

Para volver a una unidad del sistema de archivos, escriba el nombre de la unidad. Por ejemplo, escriba:

Set-Location C:

También puede trabajar con el proveedor del Registro desde cualquier otra unidad de PowerShell. Para hacer referencia a una clave del Registro desde otra ubicación, use el nombre de unidad (HKLM:, HKCU:) en la ruta de acceso. Use una barra diagonal inversa (\) o una barra diagonal (/) para indicar un nivel de la unidad del Registro .

PS C:\> cd HKLM:\Software

Nota:

PowerShell usa alias para permitirle trabajar con rutas de acceso de proveedor. Los comandos como dir y ls son alias para Get-ChildItem, cd es un alias para Set-Location y pwd es un alias para Get-Location.

En este último ejemplo se muestra otra sintaxis de ruta de acceso que puede usar para navegar por el proveedor del Registro . Esta sintaxis usa el nombre del proveedor, seguido de dos puntos ::. Esta sintaxis permite usar el nombre completo de HIVE, en lugar del nombre HKLMde la unidad asignada.

cd "Registry::HKEY_LOCAL_MACHINE\Software"

Mostrar el contenido de las claves del Registro

El Registro se divide en claves, subclaves y entradas. Para obtener más información sobre la estructura del Registro, vea Estructura del Registro.

En una unidad del Registro , cada clave es un contenedor. Una clave puede contener cualquier número de claves. Una clave del Registro que tiene una clave primaria se denomina subclave. Puede usar Get-ChildItem para ver las claves del Registro y Set-Location navegar a una ruta de acceso de clave.

Los valores del Registro son atributos de una clave del Registro. En la unidad del Registro , se denominan Propiedades del elemento. Una clave del Registro puede tener tanto claves secundarias como propiedades de elemento.

En este ejemplo, se muestra la diferencia entre Get-Item y Get-ChildItem . Cuando se usa Get-Item en la clave del Registro "Spooler", puede ver sus propiedades.

Get-Item -Path HKLM:\SYSTEM\CurrentControlSet\Services\Spooler
    Hive: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services


Name        Property
----        --------
Spooler     DependOnService    : {RPCSS, http}
            Description        : @%systemroot%\system32\spoolsv.exe,-2
            DisplayName        : @%systemroot%\system32\spoolsv.exe,-1
            ErrorControl       : 1
            FailureActions     : {16, 14, 0, 0...}
            Group              : SpoolerGroup
            ImagePath          : C:\WINDOWS\System32\spoolsv.exe
            ObjectName         : LocalSystem
            RequiredPrivileges : {SeTcbPrivilege, SeImpersonatePrivilege, ...
            ServiceSidType     : 1
            Start              : 2
            Type               : 27

Cada clave del Registro también puede tener subclaves. Cuando se usa Get-Item en una clave del Registro, no se muestran las subclaves. El Get-ChildItem cmdlet muestra subclaves de la clave "Spooler", incluidas las propiedades de cada subclave. Las propiedades de las claves primarias no se muestran al usar Get-ChildItem.

Get-ChildItem -Path HKLM:\SYSTEM\CurrentControlSet\Services\Spooler
    Hive: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Spooler


Name             Property
----             --------
Performance      Close           : PerfClose
                 Collect         : PerfCollect
                 Collect Timeout : 2000
                 Library         : C:\Windows\System32\winspool.drv
                 Object List     : 1450
                 Open            : PerfOpen
                 Open Timeout    : 4000
Security         Security : {1, 0, 20, 128...}

El Get-Item cmdlet también se puede usar en la ubicación actual. En el ejemplo siguiente se navega a la clave del Registro "Spooler" y obtiene las propiedades del elemento. El punto . se usa para indicar la ubicación actual.

cd HKLM:\System\CurrentControlSet\Services\Spooler
Get-Item .
    Hive: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services

Name             Property
----             --------
Spooler          DependOnService    : {RPCSS, http}
                 Description        : @%systemroot%\system32\spoolsv.exe,-2
...

Para obtener más información sobre los cmdlets descritos en esta sección, consulte los siguientes artículos.

-Get-Item -Get-ChildItem

Visualización de valores de clave del Registro

Los valores de clave del Registro se almacenan como propiedades de cada clave del Registro. El Get-ItemProperty cmdlet ve las propiedades de la clave del Registro con el nombre que especifique. El resultado es un PSCustomObject que contiene las propiedades que especifique.

En el ejemplo siguiente se usa el Get-ItemProperty cmdlet para ver todas las propiedades. Almacenar el objeto resultante en una variable permite tener acceso al valor de propiedad deseado.

$p = Get-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Services\Spooler
$p.DependOnService
RPCSS
http

Al especificar un valor para el -Name parámetro, se seleccionan las propiedades especificadas y se devuelve psCustomObject. En el ejemplo siguiente se muestra la diferencia en la salida cuando se usa el -Name parámetro .

Get-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Wbem
BUILD                      : 17134.1
Installation Directory     : C:\WINDOWS\system32\WBEM
MOF Self-Install Directory : C:\WINDOWS\system32\WBEM\MOF
PSPath                     : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Wbem
PSParentPath               : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft
PSChildName                : Wbem
PSDrive                    : HKLM
PSProvider                 : Microsoft.PowerShell.Core\Registry
Get-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Wbem -Name BUILD
BUILD        : 17134.1
PSPath       : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Wbem
PSParentPath : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft
PSChildName  : Wbem
PSDrive      : HKLM
PSProvider   : Microsoft.PowerShell.Core\Registry

A partir de PowerShell 5.0, el Get-ItemPropertyValue cmdlet devuelve solo el valor de la propiedad que especifique.

Get-ItemPropertyValue -Path HKLM:\SOFTWARE\Microsoft\Wbem -Name BUILD
17134.1

Para obtener más información sobre los cmdlets usados en esta sección, consulte los artículos siguientes.

Cambio de los valores de clave del Registro

El Set-ItemProperty cmdlet establece los valores del Registro asociados a una clave del Registro. En el ejemplo siguiente se usa Set-ItemProperty para cambiar el tipo de inicio del servicio de cola a manual. En el ejemplo se cambia startType de nuevo al Automatic uso del Set-Service cmdlet .

Get-Service spooler | Select-Object Name, StartMode
Name    StartType
----    ---------
spooler Automatic
$path = "HKLM:\SYSTEM\CurrentControlSet\Services\Spooler\"
Set-ItemProperty -Path $path -Name Start -Value 3
Get-Service spooler | Select-Object Name, StartMode
Name    StartType
----    ---------
spooler    Manual
Set-Service -Name Spooler -StartupType Automatic

Cada clave del Registro tiene un valor predeterminado . Puede cambiar el valor de una clave del default Registro con Set-Item o Set-ItemProperty.

Set-ItemProperty -Path HKLM:\SOFTWARE\Contoso -Name "(default)" -Value "one"
Set-Item -Path HKLM:\SOFTWARE\Contoso -Value "two"

Para obtener más información sobre los cmdlets usados en esta sección, consulte los artículos siguientes.

Creación de claves y valores del Registro

El New-Item cmdlet crea nuevas claves del Registro con un nombre que proporcione. También puede usar la mkdir función , que llama al New-Item cmdlet internamente.

mkdir ContosoCompany
    Hive: HKEY_LOCAL_MACHINE\SOFTWARE

Name                           Property
----                           --------
ContosoCompany

Puede usar el New-ItemProperty cmdlet para crear valores en una clave del Registro que especifique. En el ejemplo siguiente se crea un nuevo valor DWORD en la clave del Registro ContosoCompany.

$path = "HKLM:\SOFTWARE\ContosoCompany"
New-ItemProperty -Path $path -Name Test -Type DWORD -Value 1

Nota:

Revise la sección parámetros dinámicos de este artículo para ver otros valores de tipo permitidos.

Para obtener un uso detallado de cmdlets, consulte New-ItemProperty.

Copia de claves y valores del Registro

En el proveedor del Registro, use el Copy-Item cmdlet copia las claves y los valores del Registro. Use el cmdlet para copiar solo los valores del Copy-ItemProperty Registro. El comando siguiente copia la clave del Registro "Contoso" y sus propiedades en la ubicación HKLM:\Software\Fabrikamespecificada.

Copy-Item crea la clave de destino si no existe. Si la clave de destino existe, Copy-Item crea un duplicado de la clave de origen como elemento secundario (subclave) de la clave de destino.

Copy-Item -Path  HKLM:\Software\Contoso -Destination HKLM:\Software\Fabrikam

El siguiente comando usa el Copy-ItemProperty cmdlet para copiar el valor "Server" de la clave "Contoso" a la clave "Fabrikam".

$source = "HKLM:\SOFTWARE\Contoso"
$dest = "HKLM:\SOFTWARE\Fabrikam"
Copy-ItemProperty -Path $source -Destination $dest -Name Server

Para obtener más información sobre los cmdlets usados en esta sección, consulte los artículos siguientes.

Mover claves y valores del Registro

Los Move-Item cmdlets y Move-ItemProperty se comportan como sus homólogos "Copy". Si el destino existe, Move-Item mueve la clave de origen debajo de la clave de destino. Si la clave de destino no existe, la clave de origen se mueve a la ruta de acceso de destino.

El comando siguiente mueve la clave "Contoso" a la ruta de acceso HKLM:\SOFTWARE\Fabrikam.

Move-Item -Path HKLM:\SOFTWARE\Contoso -Destination HKLM:\SOFTWARE\Fabrikam

Este comando mueve todas las propiedades de HKLM:\SOFTWARE\ContosoCompany a HKLM:\SOFTWARE\Fabrikam.

$source = "HKLM:\SOFTWARE\Contoso"
$dest = "HKLM:\SOFTWARE\Fabrikam"
Move-ItemProperty -Path $source -Destination $dest -Name *

Para obtener más información sobre los cmdlets usados en esta sección, consulte los artículos siguientes.

Cambio de nombre de claves y valores del Registro

Puede cambiar el nombre de las claves y los valores del Registro igual que los archivos y las carpetas. Rename-Item cambia el nombre de las claves del Registro, mientras cambia Rename-ItemProperty el nombre de los valores del Registro.

$path = "HKLM:\SOFTWARE\Contoso"
Rename-ItemProperty -Path $path -Name ContosoTest -NewName FabrikamTest
Rename-Item -Path $path -NewName Fabrikam

Cambio de descriptores de seguridad

Puede restringir el acceso a las claves del Registro mediante los Get-Acl cmdlets y Set-Acl . En el ejemplo siguiente se agrega un nuevo usuario con control total a la clave del HKLM:\SOFTWARE\Contoso Registro.

$acl = Get-Acl -Path HKLM:\SOFTWARE\Contoso
$rule = New-Object System.Security.AccessControl.RegistryAccessRule `
("CONTOSO\jsmith", "FullControl", "Allow")
$acl.SetAccessRule($rule)
$acl | Set-Acl -Path HKLM:\SOFTWARE\Contoso

Para obtener más ejemplos y detalles de uso de cmdlets, consulte los artículos siguientes.

Eliminación y desactivación de claves y valores del Registro

Puede quitar elementos contenidos mediante Remove-Item. Se le pedirá que confirme la eliminación si el elemento contiene algo más. En el ejemplo siguiente se intenta eliminar una clave HKLM:\SOFTWARE\Contoso.

dir HKLM:\SOFTWARE\Contoso\
    Hive: HKEY_LOCAL_MACHINE\SOFTWARE\Contoso

Name                           Property
----                           --------
ChildKey
Remove-Item -Path HKLM:\SOFTWARE\Contoso
Confirm
The item at HKLM:\SOFTWARE\Contoso has children and the -Recurse
parameter wasn't 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 preguntar, especifique el -Recurse parámetro .

Remove-Item -Path HKLM:\SOFTWARE\Contoso -Recurse

Si desea quitar todos los elementos dentro HKLM:\SOFTWARE\Contoso de pero no HKLM:\SOFTWARE\Contoso a sí mismo, use una barra diagonal inversa \ final seguida de un carácter comodín.

Remove-Item -Path HKLM:\SOFTWARE\Contoso\* -Recurse

Este comando elimina el valor del Registro "ContosoTest" de la clave del HKLM:\SOFTWARE\Contoso Registro.

Remove-ItemProperty -Path HKLM:\SOFTWARE\Contoso -Name ContosoTest

Clear-Item borra todos los valores del Registro de una clave. En el ejemplo siguiente se borran todos los valores de la clave del HKLM:\SOFTWARE\Contoso Registro. Para borrar solo una propiedad específica, use Clear-ItemProperty.

Get-Item .\Contoso\
    Hive: HKEY_LOCAL_MACHINE\SOFTWARE

Name           Property
----           --------
Contoso        Server     : {a, b, c}
               HereString : {This is text which contains
               newlines. It also contains "quoted" strings}
               (default)  : 1
Clear-Item .\Contoso\
Get-Item .\Contoso\
    Hive: HKEY_LOCAL_MACHINE\SOFTWARE

Name                           Property
----                           --------
Contoso

Para obtener más ejemplos y detalles de uso de cmdlets, consulte los artículos siguientes.

Parámetros dinámicos

Los parámetros dinámicos son parámetros de cmdlet que agrega un proveedor de PowerShell y solo están disponibles cuando el cmdlet se usa en la unidad habilitada para el proveedor.

Escriba <Microsoft.Win32.RegistryValueKind>

Establece o cambia el tipo de datos de un valor del Registro. El valor predeterminado es String (REG_SZ).

Este parámetro funciona según lo diseñado en el cmdlet Set-ItemProperty . También está disponible en el cmdlet Set-Item en las unidades del Registro, pero no tiene ningún efecto.

  • String: se usa para los valores de REG_SZ. Pasar un objeto [System.String] al parámetro Valor.
  • ExpandString: se usa para los valores de REG_EXPAND_SZ. Pasar un objeto [System.String] al parámetro Valor. La cadena debe contener referencias no expandidas a variables de entorno que se expanden cuando se recupera el valor.
  • Binary: se usa para los valores de REG_BINARY. Pasar un objeto [System.Byte[]] al parámetro Valor.
  • DWord: se usa para los valores de REG_DWORD. Pasar un objeto [System.Int32] al parámetro Valor.
  • MultiString: se usa para los valores de REG_MULTI_SZ. Pasar un objeto [System.String[]] al parámetro Valor.
  • QWord: se usa para los valores de REG_QWORD. Pasar un objeto [System.Int64] al parámetro Valor.
  • Unknown : indica un tipo de datos del Registro no admitido, como REG_RESOURCE_LIST valores.

Uso de la canalización

Los cmdlets del proveedor aceptan entradas de canalización. Puede usar la canalización para simplificar la tarea mediante el envío de datos del proveedor de un cmdlet a otro cmdlet de proveedor. Para más información sobre cómo usar la canalización con cmdlets de proveedor, consulte las referencias de cmdlet proporcionadas en este artículo.

Ayuda

A partir de Windows PowerShell 3.0, puede obtener temas de ayuda personalizados sobre cmdlets de proveedor que explican cómo se comportan dichos cmdlets en una unidad del sistema de archivos.

Para obtener los temas de ayuda personalizados para la unidad del sistema de archivos, ejecute un Get-Help comando en una unidad del sistema de archivos o use el parámetro Path para especificar una unidad del sistema de archivos.

Get-Help Get-ChildItem
Get-Help Get-ChildItem -Path HKLM:

Consulte también