about_Registry_Provider
Имя поставщика
Реестр
Диски
HKLM:
, HKCU:
Возможности
ShouldProcess, UseTransactions
Краткое описание
Предоставляет доступ к разделам реестра, записям и значениям в PowerShell.
Подробное описание
Эта информация относится только к PowerShell, работающей в Windows.
Поставщик реестра PowerShell позволяет получать, добавлять, изменять, удалять разделы реестра, записи и значения в PowerShell.
Диски реестра — это иерархическое пространство имен, содержащее разделы реестра и подразделы на компьютере. Записи и значения реестра не являются компонентами этой иерархии. Вместо этого они свойства каждого ключа.
Поставщик реестра поддерживает следующие командлеты:
- 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
Типы, предоставляемые этим поставщиком
Поставщик реестра возвращает данные реестра в одном из двух типов:
- Microsoft.Win32.RegistryKey для разделов реестра
- PSCustomObject для значений реестра
Навигация по дискам реестра
Поставщик реестра предоставляет хранилище данных как два диска по умолчанию.
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-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:
См. также
PowerShell