使用 PowerShell 获取注册表键的值
- 什么是注册表键
- 在 PowerShell 中备份注册表键
-
在 PowerShell 中使用
Get-ItemProperty
Cmdlet 获取注册表键的值 -
在 PowerShell 中使用
Get-ItemPropertyValue
Cmdlet 获取注册表键的值
在某些情况下,修复错误、调整 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
""
) 括起来,因为某些注册表路径中有空格。将路径括在双引号中将采用所述路径的文字表达,并且不会导致错误。该命令创建一个具有 PsPath
、PsParentPath
、PsChildname
、PSDrive
、PSProvider
和另一个以键值名称命名的属性的 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 specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.
LinkedIn