about_Registry_Provider

Nome do fornecedor

Registo

Unidades

HKLM:, HKCU:

Capacidades

ShouldProcess, UseTransactions

Breve descrição

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 de 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 seu computador. As entradas e os valores do Registro não são componentes dessa hierarquia. Em vez disso, são propriedades de cada uma das chaves.

O provedor do Registro oferece suporte aos seguintes cmdlets:

Tipos expostos por este provedor

O provedor do Registro retorna dados do Registro em um de dois tipos:

O provedor do Registro expõe seu armazenamento de dados como duas unidades padrão.

  • HKLM: Mapas para a colmeia de HKEY_LOCAL_MACHINE registo
  • HKCU: Mapas para a colmeia de HKEY_CURRENT_USER registo

Para trabalhar com o registo, pode alterar a sua localização para a HKLM: unidade utilizando o seguinte comando.

Set-Location HKLM:

Para retornar a uma unidade do sistema de arquivos, digite o nome da unidade. Por exemplo, escreva:

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

Nota

O PowerShell usa aliases para permitir uma maneira familiar de trabalhar com caminhos de provedor. Comandos como dir e ls 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 HKLMda 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 a 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 uma chave do Registro, as subchaves não são exibidas. O Get-ChildItem cmdlet mostra as subchaves da chave "Spooler", incluindo as propriedades de cada subchave. As propriedades das chaves pai não são mostradas ao usar Get-ChildItemo .

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 a localização 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 seguintes artigos.

-Get-Item -Get-ChildItem

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 contendo 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

Especificar 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 define valores do Registro associados a uma chave 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 novamente para Automatic usar 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 de default uma chave do Registro com um Set-Item ou Set-ItemProperty.

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 cria novas 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 que você especificar. 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

Nota

Analise a seção de parâmetros dinâmicos neste artigo para obter outros valores de tipo permitidos.

Para obter detalhes sobre o uso do cmdlet, consulte New-ItemProperty.

Copiando chaves e valores do Registro

No provedor do Registro, use o cmdlet copia chaves Copy-Item 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 HKLM:\Software\Fabrikamespecificado.

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 homólogos "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

Este 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

Alterar 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

Você pode remover itens contidos usando Remove-Itemo . Você será solicitado a confirmar a remoção se o item contiver mais alguma 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 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 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 , mas não HKLM:\SOFTWARE\Contoso ele mesmo, use uma barra \ invertida seguida por um curinga.

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

Este 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 para uma chave. O exemplo a seguir limpa todos os valores da HKLM:\SOFTWARE\Contoso chave do 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 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 . Também está disponível no cmdlet Set-Item nas unidades do Registro, mas não tem efeito.

  • String - Usado para valores REG_SZ. Passe um [System.String] objeto para o parâmetro Value .
  • ExpandString - Usado para REG_EXPAND_SZ valores. Passe um [System.String] objeto para o parâmetro Value . A cadeia de caracteres deve conter referências não expandidas a variáveis de ambiente que são expandidas quando o valor é recuperado.
  • Binary - Usado para REG_BINARY valores. Passe um [System.Byte[]] objeto para o parâmetro Value .
  • DWord - Usado para REG_DWORD valores. Passe um [System.Int32] objeto para o parâmetro Value .
  • MultiString - Usado para REG_MULTI_SZ valores. Passe um [System.String[]] objeto para o parâmetro Value .
  • QWord - Usado para REG_QWORD valores. Passe um [System.Int64] objeto para o parâmetro Value .
  • Unknown - Indica um tipo de dados de registro não suportado, como valores de REG_RESOURCE_LIST.

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.

Obter ajuda

A partir do Windows PowerShell 3.0, você pode obter tópicos de ajuda personalizados para cmdlets de provedor que explicam como esses cmdlets se comportam em uma unidade do 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:

Consulte também