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:
- Get-Location
- Set-Location
- Get-Item
- Get-ChildItem
- Invoke-Item
- Move-Item
- New-Item
- Remove-Item
- Clear-ItemProperty
- Get-ItemProperty
- New-ItemProperty
- Remove-ItemProperty
- Set-ItemProperty
- Get-Acl
- Set-Acl
Tipos expuestos por este proveedor
El proveedor del Registro devuelve datos del Registro en uno de los dos tipos:
- Microsoft.Win32.RegistryKey para las claves del Registro
- PSCustomObject para los valores del Registro
Navegación por las unidades del Registro
El proveedor del Registro expone su almacén de datos como dos unidades predeterminadas.
HKLM:
se asigna al subárbol delHKEY_LOCAL_MACHINE
RegistroHKCU:
se asigna al subárbol delHKEY_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 HKLM
de 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.
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\Fabrikam
especificada.
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: