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