Registry Provider

提供程序名称

Registry

驱动器

HKLM:, HKCU:

简短说明

提供从 Windows PowerShell 对系统注册表项和注册表值的访问。

详细说明

使用 Windows PowerShell Registry 提供程序,您可以获取、添加、更改、清除和删除 Windows PowerShell 中的注册表项和注册表值。

注册表项表示为 Microsoft.Win32.RegistryKey 类的实例。注册表值表示为 PSCustomObject 类的实例。

使用 Registry 提供程序,您可以访问由注册表项和子项组成的分层命名空间。注册表值和数据不是该层次结构中的组件。实际上,它们是每个注册表项的属性。

Registry 提供程序支持包含 Item 名词的所有 cmdlet (Item cmdlet),例如 Get-Item、Copy-Item 和 Rename Item。在处理注册表项和子项时使用 Item cmdlet。Registry 提供程序还支持包含 ItemProperty 名词的 cmdlet (ItemProperty cmdlet)。在处理注册表值和数据时使用 ItemProperty cmdlet。不能将包含 Content 名词的 cmdlet (Content cmdlet) 与 Registry 提供程序一起使用。

每个注册表项均由一个安全描述符进行保护。您可以使用 Get-Acl 来查看注册表项的安全描述符。

功能

ShouldProcess

示例

在注册表中导航

-------------------------- 示例 1 --------------------------

此命令将当前位置设置为 HKEY_LOCAL_MACHINE\Software 注册表项:

set-location hklm:\software

-------------------------- 示例 2 --------------------------

此命令显示当前位置:

get-location

管理注册表项

-------------------------- 示例 1 --------------------------

此命令显示有关 HKEY_LOCAL_MACHINE\Software 注册表项的每个直接子项的信息:此命令显示 HKEY_CURRENT_USER\Environment 注册表项中的每个注册表条目的值名称和值数据:

get-childitem -path hklm:\software

只有当 Default 注册表条目具有注册表值时,才会返回该项。

-------------------------- 示例 2 --------------------------

此命令在 HKCU:\Environment 子项下创建 TestNew 子项:此命令显示 HKEY_CURRENT_USER\Environment 注册表项中的 Temp 注册表条目的值名称和值数据:

new-item -path hkcu:\Environment\TestNew

-------------------------- 示例 3 --------------------------

此命令删除 HKEY_CURRENT_USER\Environment 注册表项的 TestNew 子项:此命令在 HKEY_CURRENT_USER 项中创建注册表条目 pstest,并将它的值设置为 pstestvalue:

remove-item -path hkcu:\Environment\TestNew

-------------------------- 示例 4 --------------------------

此命令将 TestNew 项复制到 TestCopy 子项:此命令将 HKEY_CURRENT_USER\Environment 项中的注册表条目 pstest 的值更新为 updatedvalue:

copy-item -path  hkcu:\Environment\TestNew  hkcu:\Environment\TestNew\TestCopy

-------------------------- 示例 5 --------------------------

此命令显示有关 HKEY_LOCAL_MACHINE\Software 注册表项的所有子项的信息:此命令将 HKEY_CURRENT_USER\Environment 项中的注册表条目 pstest 的值名称重命名为 pstestnew:

get-childitem -path hklm:\Software -recurse

-------------------------- 示例 6 --------------------------

此命令将 HKEY_CURRENT_USER\Environment\testnewcopy 注册表项及其属性以及它的所有子项及其属性一起移动到 HKEY_CURRENT_USER\Environment\testnew:此命令将 HKEY_CURRENT_USER\Environment 项中的注册表条目 pstestnew 复制到 HKEY_CURRENT_USER\Environment\testnewcopy 项:

move-item -path hkcu:\environment\testnewcopy `
-destination hkcu:\environment\testnew

-------------------------- 示例 7 --------------------------

此命令将 HKEY_CURRENT_USER\Environment\testnew 注册表项重命名为 HKEY_CURRENT_USER\Environment\test:此命令将 HKEY_CURRENT_USER\environment\testnewcopy 项中的注册表条目 pstestnew 复制到 HKEY_CURRENT_USER\environment\testnew 项:

rename-item -path hkcu:\environment\testnew\ -newname test

-------------------------- 示例 8 --------------------------

此命令显示指定注册表项的安全描述符:此命令清除 HKEY_CURRENT_USER\Environment\testnew 项中的注册表条目 pstestnew 的值:

get-acl -path hkcu:\environment\testnew | format-list -property *

您可以使用 Clear-Item cmdlet 来清除子项的默认注册表条目的值。例如,以下命令清除 HKEY_CURRENT_USER\Environment\testnew 注册表项的默认条目的值: clear-item -path hkcu:\environment\testnew

-------------------------- 示例 1 --------------------------

此命令显示有关 HKEY_LOCAL_MACHINE\Software 注册表项的每个直接子项的信息:此命令显示 HKEY_CURRENT_USER\Environment 注册表项中的每个注册表条目的值名称和值数据:

get-childitem -path hklm:\software

只有当 Default 注册表条目具有注册表值时,才会返回该项。

-------------------------- 示例 2 --------------------------

此命令在 HKCU:\Environment 子项下创建 TestNew 子项:此命令显示 HKEY_CURRENT_USER\Environment 注册表项中的 Temp 注册表条目的值名称和值数据:

new-item -path hkcu:\Environment\TestNew

-------------------------- 示例 3 --------------------------

此命令删除 HKEY_CURRENT_USER\Environment 注册表项的 TestNew 子项:此命令在 HKEY_CURRENT_USER 项中创建注册表条目 pstest,并将它的值设置为 pstestvalue:

remove-item -path hkcu:\Environment\TestNew

-------------------------- 示例 4 --------------------------

此命令将 TestNew 项复制到 TestCopy 子项:此命令将 HKEY_CURRENT_USER\Environment 项中的注册表条目 pstest 的值更新为 updatedvalue:

copy-item -path  hkcu:\Environment\TestNew  hkcu:\Environment\TestNew\TestCopy

-------------------------- 示例 5 --------------------------

此命令显示有关 HKEY_LOCAL_MACHINE\Software 注册表项的所有子项的信息:此命令将 HKEY_CURRENT_USER\Environment 项中的注册表条目 pstest 的值名称重命名为 pstestnew:

get-childitem -path hklm:\Software -recurse

-------------------------- 示例 6 --------------------------

此命令将 HKEY_CURRENT_USER\Environment\testnewcopy 注册表项及其属性以及它的所有子项及其属性一起移动到 HKEY_CURRENT_USER\Environment\testnew:此命令将 HKEY_CURRENT_USER\Environment 项中的注册表条目 pstestnew 复制到 HKEY_CURRENT_USER\Environment\testnewcopy 项:

move-item -path hkcu:\environment\testnewcopy `
-destination hkcu:\environment\testnew

-------------------------- 示例 7 --------------------------

此命令将 HKEY_CURRENT_USER\Environment\testnew 注册表项重命名为 HKEY_CURRENT_USER\Environment\test:此命令将 HKEY_CURRENT_USER\environment\testnewcopy 项中的注册表条目 pstestnew 复制到 HKEY_CURRENT_USER\environment\testnew 项:

rename-item -path hkcu:\environment\testnew\ -newname test

-------------------------- 示例 8 --------------------------

此命令显示指定注册表项的安全描述符:此命令清除 HKEY_CURRENT_USER\Environment\testnew 项中的注册表条目 pstestnew 的值:

get-acl -path hkcu:\environment\testnew | format-list -property *

您可以使用 Clear-Item cmdlet 来清除子项的默认注册表条目的值。例如,以下命令清除 HKEY_CURRENT_USER\Environment\testnew 注册表项的默认条目的值: clear-item -path hkcu:\environment\testnew

-------------------------- 示例 9 --------------------------

此命令从 HKEY_CURRENT_USER\Environment\testnew 注册表项中删除注册表条目 pstestnew:

remove-itemproperty -path hkcu:\environment\testnew `
-name pstestnew

-------------------------- 示例 10 --------------------------

此命令将 HKEY_CURRENT_USER\Environment\testnew 项中的默认注册表条目的值更新为“default value”:

set-itemproperty -path hkcu:\environment\testnew `
-name "(default)" -value "default value"

也可以使用 Set-Item cmdlet 来更新注册表项的默认值。例如,以下命令更新 testnew 项的默认值: set-item -path hkcu:\environment\testnew -value "another default value"

管理注册表项

-------------------------- 示例 1 --------------------------

此命令显示有关 HKEY_LOCAL_MACHINE\Software 注册表项的每个直接子项的信息:此命令显示 HKEY_CURRENT_USER\Environment 注册表项中的每个注册表条目的值名称和值数据:

get-childitem -path hklm:\software

只有当 Default 注册表条目具有注册表值时,才会返回该项。

-------------------------- 示例 2 --------------------------

此命令在 HKCU:\Environment 子项下创建 TestNew 子项:此命令显示 HKEY_CURRENT_USER\Environment 注册表项中的 Temp 注册表条目的值名称和值数据:

new-item -path hkcu:\Environment\TestNew

-------------------------- 示例 3 --------------------------

此命令删除 HKEY_CURRENT_USER\Environment 注册表项的 TestNew 子项:此命令在 HKEY_CURRENT_USER 项中创建注册表条目 pstest,并将它的值设置为 pstestvalue:

remove-item -path hkcu:\Environment\TestNew

-------------------------- 示例 4 --------------------------

此命令将 TestNew 项复制到 TestCopy 子项:此命令将 HKEY_CURRENT_USER\Environment 项中的注册表条目 pstest 的值更新为 updatedvalue:

copy-item -path  hkcu:\Environment\TestNew  hkcu:\Environment\TestNew\TestCopy

-------------------------- 示例 5 --------------------------

此命令显示有关 HKEY_LOCAL_MACHINE\Software 注册表项的所有子项的信息:此命令将 HKEY_CURRENT_USER\Environment 项中的注册表条目 pstest 的值名称重命名为 pstestnew:

get-childitem -path hklm:\Software -recurse

-------------------------- 示例 6 --------------------------

此命令将 HKEY_CURRENT_USER\Environment\testnewcopy 注册表项及其属性以及它的所有子项及其属性一起移动到 HKEY_CURRENT_USER\Environment\testnew:此命令将 HKEY_CURRENT_USER\Environment 项中的注册表条目 pstestnew 复制到 HKEY_CURRENT_USER\Environment\testnewcopy 项:

move-item -path hkcu:\environment\testnewcopy `
-destination hkcu:\environment\testnew

-------------------------- 示例 7 --------------------------

此命令将 HKEY_CURRENT_USER\Environment\testnew 注册表项重命名为 HKEY_CURRENT_USER\Environment\test:此命令将 HKEY_CURRENT_USER\environment\testnewcopy 项中的注册表条目 pstestnew 复制到 HKEY_CURRENT_USER\environment\testnew 项:

rename-item -path hkcu:\environment\testnew\ -newname test

-------------------------- 示例 8 --------------------------

此命令显示指定注册表项的安全描述符:此命令清除 HKEY_CURRENT_USER\Environment\testnew 项中的注册表条目 pstestnew 的值:

get-acl -path hkcu:\environment\testnew | format-list -property *

您可以使用 Clear-Item cmdlet 来清除子项的默认注册表条目的值。例如,以下命令清除 HKEY_CURRENT_USER\Environment\testnew 注册表项的默认条目的值: clear-item -path hkcu:\environment\testnew

-------------------------- 示例 1 --------------------------

此命令显示有关 HKEY_LOCAL_MACHINE\Software 注册表项的每个直接子项的信息:此命令显示 HKEY_CURRENT_USER\Environment 注册表项中的每个注册表条目的值名称和值数据:

get-childitem -path hklm:\software

只有当 Default 注册表条目具有注册表值时,才会返回该项。

-------------------------- 示例 2 --------------------------

此命令在 HKCU:\Environment 子项下创建 TestNew 子项:此命令显示 HKEY_CURRENT_USER\Environment 注册表项中的 Temp 注册表条目的值名称和值数据:

new-item -path hkcu:\Environment\TestNew

-------------------------- 示例 3 --------------------------

此命令删除 HKEY_CURRENT_USER\Environment 注册表项的 TestNew 子项:此命令在 HKEY_CURRENT_USER 项中创建注册表条目 pstest,并将它的值设置为 pstestvalue:

remove-item -path hkcu:\Environment\TestNew

-------------------------- 示例 4 --------------------------

此命令将 TestNew 项复制到 TestCopy 子项:此命令将 HKEY_CURRENT_USER\Environment 项中的注册表条目 pstest 的值更新为 updatedvalue:

copy-item -path  hkcu:\Environment\TestNew  hkcu:\Environment\TestNew\TestCopy

-------------------------- 示例 5 --------------------------

此命令显示有关 HKEY_LOCAL_MACHINE\Software 注册表项的所有子项的信息:此命令将 HKEY_CURRENT_USER\Environment 项中的注册表条目 pstest 的值名称重命名为 pstestnew:

get-childitem -path hklm:\Software -recurse

-------------------------- 示例 6 --------------------------

此命令将 HKEY_CURRENT_USER\Environment\testnewcopy 注册表项及其属性以及它的所有子项及其属性一起移动到 HKEY_CURRENT_USER\Environment\testnew:此命令将 HKEY_CURRENT_USER\Environment 项中的注册表条目 pstestnew 复制到 HKEY_CURRENT_USER\Environment\testnewcopy 项:

move-item -path hkcu:\environment\testnewcopy `
-destination hkcu:\environment\testnew

-------------------------- 示例 7 --------------------------

此命令将 HKEY_CURRENT_USER\Environment\testnew 注册表项重命名为 HKEY_CURRENT_USER\Environment\test:此命令将 HKEY_CURRENT_USER\environment\testnewcopy 项中的注册表条目 pstestnew 复制到 HKEY_CURRENT_USER\environment\testnew 项:

rename-item -path hkcu:\environment\testnew\ -newname test

-------------------------- 示例 8 --------------------------

此命令显示指定注册表项的安全描述符:此命令清除 HKEY_CURRENT_USER\Environment\testnew 项中的注册表条目 pstestnew 的值:

get-acl -path hkcu:\environment\testnew | format-list -property *

您可以使用 Clear-Item cmdlet 来清除子项的默认注册表条目的值。例如,以下命令清除 HKEY_CURRENT_USER\Environment\testnew 注册表项的默认条目的值: clear-item -path hkcu:\environment\testnew

-------------------------- 示例 9 --------------------------

此命令从 HKEY_CURRENT_USER\Environment\testnew 注册表项中删除注册表条目 pstestnew:

remove-itemproperty -path hkcu:\environment\testnew `
-name pstestnew

-------------------------- 示例 10 --------------------------

此命令将 HKEY_CURRENT_USER\Environment\testnew 项中的默认注册表条目的值更新为“default value”:

set-itemproperty -path hkcu:\environment\testnew `
-name "(default)" -value "default value"

也可以使用 Set-Item cmdlet 来更新注册表项的默认值。例如,以下命令更新 testnew 项的默认值: set-item -path hkcu:\environment\testnew -value "another default value"

动态参数

动态参数是由 Windows PowerShell 提供程序添加的 cmdlet 参数,且只可用于在启用了提供程序的驱动器中使用 cmdlet 的情况。

Type <Microsoft.Win32.RegistryValueKind>

指定在将值存储到注册表中时使用的数据类型,或标识注册表中的值的数据类型。

Value Description

String

指定以 Null 结尾的字符串。与 REG_SZ 等效。

ExpandString

指定一个以 Null 结尾的字符串,该字符串包含对环境变量的未展开引用,这些引用在检索值时展开。与 REG_EXPAND_SZ 等效。

Binary

指定任意格式的二进制数据。与 REG_BINARY 等效。

DWord

指定一个 32 位的二进制数。与 REG_DWORD 等效。

MultiString

指定一个包含以 Null 结尾的字符串的数组,该数组以两个 Null 字符终止。与 REG_MULTI_SZ 等效。

QWord

指定一个 64 位的二进制数。与 REG_QWORD 等效。

Unknown

指示不支持的注册表数据类型,如 REG_RESOURCE_LIST。

支持 Cmdlet

另请参阅

概念

about_providers