about_Registry_Provider
Nome do provedor
Registro
Unidades
HKLM:
, HKCU:
Funcionalidades
ShouldProcess, UseTransactions
Descrição breve
Fornece acesso às chaves do Registro, entradas e valores no PowerShell.
Descrição detalhada
Essas informações só se aplicam ao PowerShell em execução no Windows.
O provedor do Registro do PowerShell permite obter, adicionar, alterar, limpar e excluir chaves, entradas e valores do Registro no PowerShell.
As unidades do Registro são um namespace hierárquico que contém as chaves e subchaves do Registro no computador. Valores e entradas de Registro não são componentes dessa hierarquia. Em vez disso, eles são propriedades de cada uma das chaves.
O provedor do Registro oferece suporte aos cmdlets a seguir, que são abordados neste artigo.
- 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 expostos por este provedor
As chaves do Registro são representadas como instâncias da classe Microsoft.Win32.RegistryKey . As entradas do Registro são representadas como instâncias da classe PSCustomObject .
Navegando nas unidades do Registro
O provedor do Registro expõe seu armazenamento de dados como duas unidades padrão. O HKEY_LOCAL_MACHINE do local do Registro é mapeado para a HKLM:
unidade e HKEY_CURRENT_USER é mapeado para a HKCU:
unidade. Para trabalhar com o registro, você pode alterar seu local para a HKLM:
unidade usando o seguinte comando.
Set-Location HKLM:
Para retornar a uma unidade de sistema de arquivos, digite o nome da unidade. Por exemplo, digite:
Set-Location C:
Você também pode trabalhar com o provedor do Registro de qualquer outra unidade do PowerShell. Para fazer referência a uma chave do Registro de outro local, use o nome da unidade (HKLM:
, HKCU:
) no caminho. Use uma barra invertida (\
) ou uma barra/
() para indicar um nível da unidade do Registro .
PS C:\> cd HKLM:\Software
Observação
O PowerShell usa aliases para permitir que você tenha uma maneira familiar de trabalhar com caminhos de provedor. Comandos como dir
e ls
agora são aliases para Get-ChildItem, cd
é um alias para Set-Location e pwd
é um alias para Get-Location.
Este último exemplo mostra outra sintaxe de caminho que você pode usar para navegar no provedor do Registro . Essa sintaxe usa o nome do provedor, seguido por ::
dois pontos. Essa sintaxe permite que você use o nome completo do HIVE, em vez do nome HKLM
da unidade mapeada .
cd "Registry::HKEY_LOCAL_MACHINE\Software"
Exibindo o conteúdo das chaves do Registro
O registro é dividido em chaves, subchaves e entradas. Para obter mais informações sobre a estrutura do Registro, consulte Estrutura do Registro.
Em uma unidade do Registro , cada chave é um contêiner. Uma chave pode conter qualquer número de chaves. Uma chave do Registro que tem uma chave pai é chamada de subchave. Você pode usar Get-ChildItem
para exibir chaves do Registro e Set-Location
navegar até um caminho de chave.
Os valores do Registro são atributos de uma chave do Registro. Na unidade do Registro , eles são chamados de Propriedades do Item. Uma chave do Registro pode ter chaves filhas e propriedades de item.
Neste exemplo, a diferença entre Get-Item
e Get-ChildItem
é mostrada. Quando você usa Get-Item
na chave do Registro "Spooler", você pode exibir suas propriedades.
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 chave do Registro também pode ter subchaves. Quando você usa Get-Item
em uma chave do Registro, as subchaves não são exibidas. O Get-ChildItem
cmdlet mostrará itens filhos da chave "Spooler", incluindo as propriedades de cada subchave. As propriedades das chaves pai não são mostradas ao usar Get-ChildItem
o .
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...}
O Get-Item
cmdlet também pode ser usado no local atual. O exemplo a seguir navega até a chave do Registro "Spooler" e obtém as propriedades do item.
O ponto .
é usado para indicar o local atual.
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 obter mais informações sobre os cmdlets abordados nesta seção, consulte os artigos a seguir.
Exibindo valores de chave do Registro
Os valores da chave do Registro são armazenados como propriedades de cada chave do Registro. O Get-ItemProperty
cmdlet exibe as propriedades da chave do Registro usando o nome especificado. O resultado é um PSCustomObject que contém as propriedades especificadas.
O exemplo a seguir usa o Get-ItemProperty
cmdlet para exibir todas as propriedades. Armazenar o objeto resultante em uma variável permite que você acesse o valor da propriedade desejada.
$p = Get-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Services\Spooler
$p.DependOnService
RPCSS
http
A especificação de um valor para o -Name
parâmetro seleciona as propriedades especificadas e retorna o PSCustomObject. O exemplo a seguir mostra a diferença na saída quando você usa o -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 do PowerShell 5.0, o Get-ItemPropertyValue
cmdlet retorna apenas o valor da propriedade especificada.
Get-ItemPropertyValue -Path HKLM:\SOFTWARE\Microsoft\Wbem -Name BUILD
17134.1
Para obter mais informações sobre os cmdlets usados nesta seção, consulte os artigos a seguir.
Alterando valores de chave do Registro
O Set-ItemProperty
cmdlet definirá atributos para chaves do Registro. O exemplo a seguir usa Set-ItemProperty
para alterar o tipo de início do serviço de spooler para manual. O exemplo altera o StartType de volta para Automatic usando o 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 chave do Registro tem um valor padrão . Você pode alterar o valor padrão de uma chave do Registro com ou Set-ItemProperty
Set-Item
.
Set-ItemProperty -Path HKLM:\SOFTWARE\Contoso -Name "(default)" -Value "one"
Set-Item -Path HKLM:\SOFTWARE\Contoso -Value "two"
Para obter mais informações sobre os cmdlets usados nesta seção, consulte os artigos a seguir.
Criando chaves e valores do Registro
O New-Item
cmdlet criará chaves do Registro com um nome fornecido.
Você também pode usar a mkdir
função, que chama o New-Item
cmdlet internamente.
mkdir ContosoCompany
Hive: HKEY_LOCAL_MACHINE\SOFTWARE
Name Property
---- --------
ContosoCompany
Você pode usar o New-ItemProperty
cmdlet para criar valores em uma chave do Registro especificada. O exemplo a seguir cria um novo valor DWORD na chave do Registro ContosoCompany.
$path = "HKLM:\SOFTWARE\ContosoCompany"
New-ItemProperty -Path $path -Name Test -Type DWORD -Value 1
Observação
Examine a seção de parâmetros dinâmicos neste artigo para obter outros valores de tipo permitidos.
Para obter o uso detalhado do cmdlet, consulte New-ItemProperty.
Copiando chaves e valores do Registro
No provedor do Registro , use o cmdlet copia Copy-Item
chaves e valores do Registro. Use o cmdlet para copiar somente valores do Copy-ItemProperty
Registro.
O comando a seguir copia a chave do Registro "Contoso" e suas propriedades para o local especificado "HKLM:\Software\Fabrikam".
Copy-Item
cria a chave de destino se ela não existir. Se a chave de destino existir, Copy-Item
criará uma duplicata da chave de origem como um item filho (subchave) da chave de destino.
Copy-Item -Path HKLM:\Software\Contoso -Destination HKLM:\Software\Fabrikam
O comando a seguir usa o Copy-ItemProperty
cmdlet para copiar o valor "Server" da chave "Contoso" para a chave "Fabrikam".
$source = "HKLM:\SOFTWARE\Contoso"
$dest = "HKLM:\SOFTWARE\Fabrikam"
Copy-ItemProperty -Path $source -Destination $dest -Name Server
Para obter mais informações sobre os cmdlets usados nesta seção, consulte os artigos a seguir.
Movendo chaves e valores do Registro
Os Move-Item
cmdlets e Move-ItemProperty
se comportam como seus equivalentes "Copiar". Se o destino existir, Move-Item
move a chave de origem abaixo da chave de destino. Se a chave de destino não existir, a chave de origem será movida para o caminho de destino.
O comando a seguir move a chave "Contoso" para o caminho HKLM:\SOFTWARE\Fabrikam
.
Move-Item -Path HKLM:\SOFTWARE\Contoso -Destination HKLM:\SOFTWARE\Fabrikam
Esse comando move todas as propriedades de HKLM:\SOFTWARE\ContosoCompany
para HKLM:\SOFTWARE\Fabrikam
.
$source = "HKLM:\SOFTWARE\Contoso"
$dest = "HKLM:\SOFTWARE\Fabrikam"
Move-ItemProperty -Path $source -Destination $dest -Name *
Para obter mais informações sobre os cmdlets usados nesta seção, consulte os artigos a seguir.
Renomeando chaves e valores do Registro
Você pode renomear chaves e valores do Registro da mesma forma que faria com arquivos e pastas.
Rename-Item
Renomeia chaves do Registro, enquanto Rename-ItemProperty
renomeia valores do Registro.
$path = "HKLM:\SOFTWARE\Contoso"
Rename-ItemProperty -Path $path -Name ContosoTest -NewName FabrikamTest
Rename-Item -Path $path -NewName Fabrikam
Alterando descritores de segurança
Você pode restringir o acesso às chaves do Registro usando os Get-Acl
cmdlets e Set-Acl
. O exemplo a seguir adiciona um novo usuário com controle total à chave do 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 obter mais exemplos e detalhes de uso do cmdlet, consulte os artigos a seguir.
Removendo e limpando chaves e valores do Registro
É possível remover os itens contidos usando Remove-Item
, mas será solicitado que você confirme a remoção se o item contiver qualquer outra coisa. O exemplo a seguir tenta excluir uma chave 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 excluir itens contidos sem solicitar, especifique o -Recurse
parâmetro.
Remove-Item -Path HKLM:\SOFTWARE\Contoso -Recurse
Se você quiser remover todos os itens dentro HKLM:\SOFTWARE\Contoso
dele, mas não HKLM:\SOFTWARE\Contoso
em si, use uma barra \
invertida à direita seguida de um curinga.
Remove-Item -Path HKLM:\SOFTWARE\Contoso\* -Recurse
Esse comando exclui o valor do Registro "ContosoTest" da HKLM:\SOFTWARE\Contoso
chave do Registro.
Remove-ItemProperty -Path HKLM:\SOFTWARE\Contoso -Name ContosoTest
Clear-Item
Limpa todos os valores do Registro de uma chave. O exemplo a seguir limpa todos os valores da chave do HKLM:\SOFTWARE\Contoso
Registro. Para limpar apenas uma propriedade 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 obter mais exemplos e detalhes de uso do cmdlet, consulte os artigos a seguir.
Parâmetros dinâmicos
Parâmetros dinâmicos são parâmetros de cmdlet que são adicionados por um provedor do PowerShell e estão disponíveis somente quando o cmdlet está sendo usado na unidade habilitada para provedor.
Tipo: <Microsoft.Win32.RegistryValueKind>
Estabelece ou altera o tipo de dados de um valor do Registro. O padrão é String
(REG_SZ).
Esse parâmetro funciona conforme projetado no cmdlet Set-ItemProperty . Ele também está disponível no cmdlet Set-Item nas unidades do Registro, mas não tem efeito.
Valor | Descrição |
---|---|
String |
Especifica uma cadeia de caracteres terminada em nulo. Usado para valores REG_SZ. |
ExpandString |
Especifica uma cadeia de caracteres terminada em nulo que contém não expandida |
referências a variáveis de ambiente que são expandidas quando | |
O valor é recuperado. Usado para valores REG_EXPAND_SZ. | |
Binary |
Especifica os dados binários em qualquer formulário. Usado para valores REG_BINARY. |
DWord |
Especifica um número binário de 32 bits. Usado para valores REG_DWORD. |
MultiString |
Especifica uma matriz de cadeias de caracteres terminadas em nulo terminadas por |
Dois caracteres nulos. Usado para valores REG_MULTI_SZ. | |
QWord |
Especifica um número binário de 64 bits. Usado para valores REG_QWORD. |
Unknown |
Indica um tipo de dados do Registro sem suporte, como |
REG_RESOURCE_LIST valores. |
Cmdlets suportados
Usando o pipeline
Os cmdlets do provedor aceitam entrada de pipeline. Você pode usar o pipeline para simplificar a tarefa enviando dados do provedor de um cmdlet para outro cmdlet do provedor. Para ler mais sobre como usar o pipeline com cmdlets de provedor, consulte as referências de cmdlet fornecidas ao longo deste artigo.
Obtendo ajuda
A partir do Windows PowerShell 3.0, você pode obter tópicos da Ajuda personalizados para cmdlets do provedor que explicam como esses cmdlets se comportam em uma unidade de sistema de arquivos.
Para obter os tópicos de ajuda personalizados para a unidade do sistema de arquivos, execute um Get-Help
comando em uma unidade do sistema de arquivos ou use o parâmetro Path para especificar uma unidade do sistema de arquivos.
Get-Help Get-ChildItem
Get-Help Get-ChildItem -Path HKLM:
Confira também
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de