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
Esta información solo se aplica a PowerShell que se ejecuta en Windows.
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. Los valores y las entradas del Registro no forman parte de esa jerarquía. En su lugar, son propiedades de cada una de las claves.
El proveedor del Registro admite los siguientes cmdlets, que se tratan en este artículo.
- 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
Las claves del Registro se representan como instancias de la clase Microsoft.Win32.RegistryKey . Las entradas del Registro se representan como instancias de la clase PSCustomObject .
Navegación por las unidades del Registro
El proveedor del Registro expone su almacén de datos como dos unidades predeterminadas. La ubicación del Registro HKEY_LOCAL_MACHINE se asigna a la HKLM:
unidad y HKEY_CURRENT_USER se asigna a la HKCU:
unidad. 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
ahora 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 le mostrará elementos secundarios 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 establecerá atributos para las claves 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 a Automático mediante el 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 predeterminado de una clave del 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 creará 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 especificada "HKLM:\Software\Fabrikam".
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
Los elementos contenidos se pueden quitar mediante Remove-Item
, pero se pedirá que se 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 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 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.
Valor | Descripción |
---|---|
String |
Especifica una cadena terminada en null. Se usa para los valores de REG_SZ. |
ExpandString |
Especifica una cadena terminada en null que contiene unexpanded |
referencias a variables de entorno que se expanden cuando | |
el valor se recupera. Se usa para los valores de REG_EXPAND_SZ. | |
Binary |
Especifica datos binarios en cualquier formato. Se usa para los valores de REG_BINARY. |
DWord |
Especifica un número binario de 32 bits. Se usa para los valores de REG_DWORD. |
MultiString |
Especifica una matriz de cadenas terminadas en NULL terminadas por |
dos caracteres NULL. Se usa para los valores de REG_MULTI_SZ. | |
QWord |
Especifica un número binario de 64 bits. Se usa para los valores de REG_QWORD. |
Unknown |
Indica un tipo de datos del Registro no admitido, como |
REG_RESOURCE_LIST valores. |
Cmdlets admitidos
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
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de