使用 PowerShell 获取注册表键的值

Marion Paul Kenneth Mendoza 2023年1月30日 2022年5月16日
  1. 什么是注册表键
  2. 在 PowerShell 中备份注册表键
  3. 在 PowerShell 中使用 Get-ItemProperty Cmdlet 获取注册表键的值
  4. 在 PowerShell 中使用 Get-ItemPropertyValue Cmdlet 获取注册表键的值
使用 PowerShell 获取注册表键的值

在某些情况下,修复错误、调整 Windows 功能或完全卸载软件或产品需要你编辑 Windows 注册表。

虽然使用注册表编辑器可能很方便,但如果我们不够小心,仍然可能会出现错误。编辑注册表是非常微妙的,你的本地系统依赖于它。

本文将向你展示如何使用 Windows PowerShell 安全地获取注册表键值。

什么是注册表键

注册表键有点像结构化的文件夹,但它只存在于 Windows 注册表中。

此外,注册表键也可能包含注册表值,就像文件夹包含文件一样。注册表键还可以包括其他注册表键,通常称为子项。

如前所述,Windows 注册表是结构化的,最顶层的注册表键称为注册表配置单元。这些被认为是具有特殊权限的特殊注册表键,但它们仍然具有与标准注册表键相同的基本功能。

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft

如果我们以上面的例子为例,HKEY_LOCAL_MACHINE 或简称 HKLM 是注册表路径的顶部。SOFTWARE 注册表键随后接替它,并且如前所述,注册表键中可以包含更多项,我们称之为子项,例如 Microsoft

在 PowerShell 中备份注册表键

在我们进行任何更改之前备份我们的注册表是明智的。如前所述,注册表中的任何意外更改都可能导致你的文件、软件甚至整个操作系统出现错误。

但是,使用你正在更改的密钥的副本,你可以放心地知道你可以恢复任何可能导致操作系统出现问题的更改。

我们可能会使用旧命令 reg export 来快速备份你的注册表。例如,下面的语法将备份整个 HKLM 注册表。

reg export HKLM C:\RegBack\HKLM.Reg /y

你备份的注册表键将以 .REG 文件格式导出。因此,你可以通过双击注册表文件并按照提示快速恢复备份的注册表键。

在 PowerShell 中使用 Get-ItemProperty Cmdlet 获取注册表键的值

Get-ItemProperty 是一个 PowerShell cmdlet,用于以比其相关命令 Get-Item 更易读的格式返回注册表键。我们还可以使用 Get-ItemProperty cmdlet 获取特定注册表键的值。

示例代码:

$registryPath = "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion"

Get-ItemProperty -Path $registryPath -Name ProgramFilesDir

输出:

ProgramFilesDir : C:\Program Files
PSPath          : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Micr
                  osoft\Windows\CurrentVersion
PSParentPath    : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Micr
                  osoft\Windows
PSChildName     : CurrentVersion
PSDrive         : HKLM
PSProvider      : Microsoft.PowerShell.Core\Registry
注意
请务必将注册表路径用双引号 ("") 括起来,因为某些注册表路径中有空格。将路径括在双引号中将采用所述路径的文字表达,并且不会导致错误。

该命令创建一个具有 PsPathPsParentPathPsChildnamePSDrivePSProvider 和另一个以键值名称命名的属性的 PSCustomObject 对象。

因此,要仅输出注册表键的实际值,我们可以在脚本中调用键值名称属性。

示例代码:

$registryPath = "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion"

$keyValue = Get-ItemProperty -Path $registryPath -Name ProgramFilesDir

$keyValue.ProgramFilesDir

输出:

C:\Program Files

命令 Get-ItemProperty 适用于 PowerShell 版本 2 到 5。但是,在 Windows PowerShell 5 中,Microsoft 引入了一个新的 cmdlet,使在命令行中打印注册表键变得更加简单。

在 PowerShell 中使用 Get-ItemPropertyValue Cmdlet 获取注册表键的值

如前所述,Windows PowerShell 版本 5 中引入了 Get-ItemPropertyValue cmdlet,以解决以更短、更直接的方式获取注册表键值的查询。

cmdlet 只需要两个参数即可工作:注册表文件路径和需要查询值的注册表键。

示例代码:

Get-ItemPropertyValue 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion' 'ProgramFilesDir'

输出:

C:\Program Files
Marion Paul Kenneth Mendoza avatar Marion Paul Kenneth Mendoza avatar

Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.

LinkedIn

相关文章 - PowerShell Registry