Поделиться через


about_Registry_Provider

Имя поставщика

Регистратура

Drives

HKLM:, HKCU:

Capabilities

ShouldProcess, UseTransactions

Краткое описание

Предоставляет доступ к разделам реестра, записям и значениям в PowerShell.

Подробное описание

Эта информация относится только к PowerShell, работающей в Windows.

Поставщик реестра PowerShell позволяет получать, добавлять, изменять, очищать и удалять разделы реестра, записи и значения в PowerShell.

Диски реестра — это иерархическое пространство имен, содержащее разделы реестра и подразделы на компьютере. Записи и значения реестра не являются компонентами этой иерархии. Вместо этого они свойства каждого ключа.

Поставщик реестра поддерживает следующие командлеты:

Типы, предоставляемые этим поставщиком

Поставщик реестра возвращает данные реестра в одном из двух типов:

Поставщик реестра предоставляет хранилище данных в виде двух дисков по умолчанию.

  • HKLM: сопоставляется с кустом реестра HKEY_LOCAL_MACHINE
  • HKCU: сопоставляется с кустом реестра HKEY_CURRENT_USER

Чтобы работать с реестром, можно изменить расположение на диск HKLM: с помощью следующей команды.

Set-Location HKLM:

Чтобы вернуться к диску файловой системы, введите имя диска. Например, введите:

Set-Location C:

Вы также можете работать с поставщиком реестра с любого другого диска PowerShell. Чтобы ссылаться на раздел реестра из другого расположения, используйте имя диска (HKLM:, HKCU:) в пути. Используйте обратную косую черту (\) или косую черту (/) для указания уровня диска реестра.

PS C:\> cd HKLM:\Software

Заметка

PowerShell использует псевдонимы, чтобы предоставить знакомый способ работы с путями поставщика. Такие команды, как dir и ls, являются псевдонимами для Get-ChildItem, cd является псевдонимом для Set-Location, а pwd — псевдоним для Get-Location.

В этом последнем примере показан другой синтаксис пути, который можно использовать для перехода к поставщику реестра. Этот синтаксис использует имя поставщика, за которым следует два двоеточия ::. Этот синтаксис позволяет использовать полное имя HIVE вместо сопоставленного имени диска HKLM.

cd "Registry::HKEY_LOCAL_MACHINE\Software"

Отображение содержимого разделов реестра

Реестр делится на разделы, подразделы и записи. Дополнительные сведения о структуре реестра см. в разделе Структура реестра.

На диске реестра каждый ключ является контейнером. Ключ может содержать любое количество ключей. Раздел реестра с родительским ключом называется вложенным ключом. Вы можете использовать Get-ChildItem для просмотра разделов реестра и Set-Location для перехода к пути к ключу.

Значения реестра — это атрибуты раздела реестра. На диске реестра они называются свойства элементов. Раздел реестра может иметь как дочерние ключи, так и свойства элементов.

В этом примере показано различие между Get-Item и Get-ChildItem. При использовании Get-Item в разделе реестра Spooler можно просмотреть его свойства.

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

Каждый раздел реестра также может содержать вложенные разделы. При использовании Get-Item в разделе реестра вложенные разделы не отображаются. В командлете Get-ChildItem показаны подразделы ключа Spooler, включая свойства каждого подраздела. Свойства родительских ключей не отображаются при использовании 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...}

Командлет Get-Item также можно использовать в текущем расположении. Следующий пример переходит к разделу реестра Spooler и получает свойства элемента. Точка . используется для указания текущего расположения.

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

Дополнительные сведения о командлетах, описанных в этом разделе, см. в следующих статьях.

- Get-Item -Get-ChildItem

Просмотр значений раздела реестра

Значения разделов реестра хранятся в качестве свойств каждого раздела реестра. Свойства раздела реестра Get-ItemProperty командлета просматривают с помощью указанного имени. Результатом является PSCustomObject с заданными свойствами.

В следующем примере используется командлет Get-ItemProperty для просмотра всех свойств. Хранение результирующего объекта в переменной позволяет получить доступ к требуемому значению свойства.

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

При указании значения для параметра -Name выбирается заданные свойства и возвращается PSCustomObject. В следующем примере показано различие выходных данных при использовании параметра -Name.

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

Начиная с PowerShell 5.0 командлет Get-ItemPropertyValue возвращает только указанное свойство.

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

Дополнительные сведения о командлетах, используемых в этом разделе, см. в следующих статьях.

Изменение значений раздела реестра

Командлет Set-ItemProperty задает значения реестра, связанные с разделом реестра. В следующем примере используется Set-ItemProperty для изменения типа запуска службы spooler на ручное. В примере StartType обратно в Automatic с помощью командлета Set-Service.

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

Каждый раздел реестра имеет значение по умолчанию. Можно изменить значение default раздела реестра с помощью Set-Item или Set-ItemProperty.

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

Дополнительные сведения о командлетах, используемых в этом разделе, см. в следующих статьях.

Создание разделов реестра и значений

Командлет New-Item создает новые разделы реестра с указанным именем. Вы также можете использовать функцию mkdir, которая вызывает командлет New-Item внутренне.

mkdir ContosoCompany
    Hive: HKEY_LOCAL_MACHINE\SOFTWARE

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

Командлет New-ItemProperty можно использовать для создания значений в заданном разделе реестра. В следующем примере создается новое значение DWORD в разделе реестра ContosoCompany.

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

Заметка

Ознакомьтесь с разделом динамических параметров в этой статье для других допустимых значений типов.

Подробные сведения об использовании командлетов см. в New-ItemProperty.

Копирование разделов и значений реестра

В поставщике реестра используйте командлет Copy-Item копирует разделы и значения реестра. Используйте командлет Copy-ItemProperty только для копирования значений реестра. Следующая команда копирует раздел реестра Contoso и его свойства в указанное расположение HKLM:\Software\Fabrikam.

Copy-Item создает целевой ключ, если он не существует. Если ключ назначения существует, Copy-Item создает дубликат исходного ключа в качестве дочернего элемента (подраздела) конечного ключа.

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

Следующая команда использует командлет Copy-ItemProperty для копирования значения Server из ключа Contoso в ключ Fabrikam.

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

Дополнительные сведения о командлетах, используемых в этом разделе, см. в следующих статьях.

Перемещение разделов реестра и значений

Командлеты Move-Item и Move-ItemProperty ведут себя как их коллеги Copy. Если назначение существует, Move-Item перемещает исходный ключ под ключом назначения. Если ключ назначения не существует, исходный ключ перемещается в путь назначения.

Следующая команда перемещает ключ Contoso в путь HKLM:\SOFTWARE\Fabrikam.

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

Эта команда перемещает все свойства из HKLM:\SOFTWARE\ContosoCompany в HKLM:\SOFTWARE\Fabrikam.

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

Дополнительные сведения о командлетах, используемых в этом разделе, см. в следующих статьях.

Переименование разделов и значений реестра

Вы можете переименовать разделы и значения реестра так же, как и файлы и папки. Rename-Item переименовывает разделы реестра, а Rename-ItemProperty переименовывает значения реестра.

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

Изменение дескрипторов безопасности

Вы можете ограничить доступ к разделам реестра с помощью командлетов Get-Acl и Set-Acl. В следующем примере новый пользователь с полным контролем добавляется в раздел реестра HKLM:\SOFTWARE\Contoso.

$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

Дополнительные примеры и сведения об использовании командлетов см. в следующих статьях.

Удаление и очистка разделов реестра и значений

Вы можете удалить содержащиеся элементы с помощью Remove-Item. Вам будет предложено подтвердить удаление, если элемент содержит что-либо другое. В следующем примере выполняется попытка удалить ключ 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"):

Чтобы удалить содержащиеся элементы без запроса, укажите параметр -Recurse.

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

Если вы хотите удалить все элементы внутри HKLM:\SOFTWARE\Contoso, но не HKLM:\SOFTWARE\Contoso себя, используйте конечную обратную косую черту \ за подстановочным знаком.

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

Эта команда удаляет значение реестра ContosoTest из раздела реестра HKLM:\SOFTWARE\Contoso.

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

Clear-Item очищает все значения реестра для ключа. В следующем примере все значения очищается из раздела реестра HKLM:\SOFTWARE\Contoso. Чтобы очистить только определенное свойство, используйте 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

Дополнительные примеры и сведения об использовании командлетов см. в следующих статьях.

Динамические параметры

Динамические параметры — это параметры командлета, добавленные поставщиком PowerShell, и доступны только в том случае, если командлет используется на диске с поддержкой поставщика.

Тип <Microsoft.Win32.RegistryValueKind>

Устанавливает или изменяет тип данных значения реестра. Значение по умолчанию — String (REG_SZ).

Этот параметр работает в командлете Set-ItemProperty. Он также доступен в командлете set-Item в дисках реестра, но он не влияет.

  • String — используется для значений REG_SZ. Передайте объект [System.String] параметру значения.
  • ExpandString — используется для значений REG_EXPAND_SZ. Передайте объект [System.String] параметру значения. Строка должна содержать необъяснимые ссылки на переменные среды, развернутые при извлечении значения.
  • Binary — используется для значений REG_BINARY. Передайте объект [System.Byte[]] параметру значения.
  • DWord — используется для значений REG_DWORD. Передайте объект [System.Int32] параметру значения.
  • MultiString — используется для значений REG_MULTI_SZ. Передайте объект [System.String[]] параметру значения.
  • QWord — используется для значений REG_QWORD. Передайте объект [System.Int64] параметру значения.
  • Unknown — указывает неподдерживаемый тип данных реестра, например значения REG_RESOURCE_LIST.

Использование конвейера

Командлеты поставщика принимают входные данные конвейера. Конвейер можно использовать для упрощения задачи, отправляя данные поставщика из одного командлета в другой командлет поставщика. Дополнительные сведения об использовании конвейера с командлетами поставщика см. в приведенных в этой статье ссылок на командлеты.

Получение помощи

Начиная с Windows PowerShell 3.0, вы можете получить настраиваемые разделы справки для командлетов поставщика, которые объясняют, как эти командлеты работают на диске файловой системы.

Чтобы получить разделы справки, настроенные для диска файловой системы, выполните команду Get-Help на диске файловой системы или используйте параметр Path, чтобы указать диск файловой системы.

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

См. также