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


about_Registry_Provider

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

Реестр

Диски

HKLM:, HKCU:

Возможности

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-ItemProperty Командлеты Move-Item ведут себя так, как их коллеги 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] Передайте объект параметру Value.
  • ExpandString — используется для значений REG_EXPAND_SZ. [System.String] Передайте объект параметру Value. Строка должна содержать необъяснимые ссылки на переменные среды, развернутые при извлечении значения.
  • Binary — используется для значений REG_BINARY. [System.Byte[]] Передайте объект параметру Value.
  • DWord — используется для значений REG_DWORD. [System.Int32] Передайте объект параметру Value.
  • MultiString — используется для значений REG_MULTI_SZ. [System.String[]] Передайте объект параметру Value.
  • QWord — используется для значений REG_QWORD. [System.Int64] Передайте объект параметру Value.
  • Unknown — указывает неподдерживаемый тип данных реестра, например значения REG_RESOURCE_LIST.

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

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

Получение справки

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

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

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

См. также