如何检索原始的,未解决的(未扩展的)注册表值?

时间:2018-08-09 21:53:14

标签: powershell registry

在系统属性>环境变量>用户变量> PATH中包含:

%USERPROFILE%\Downloads\SysinternalsSuite;%USERPROFILE%\bin

可以使用以下方法检索该值:

PS C:\src\t> (Get-ItemProperty -Path HKCU:\Environment).PATH
C:\Users\lit\Downloads\SysinternalsSuite;C:\Users\lit\bin

有什么方法可以在不进行变量扩展的情况下获取原始值?似乎Get-ItemProperty需要切换-Raw

1 个答案:

答案 0 :(得分:0)

PetSerAl曾多次在简短的问题评论中提供了有效的解决方案。

实际上,PowerShell的 Get-ItemProperty / Get-ItemPropertyValue cmdlet当前(Windows PowerShell v5.1 / PowerShell Core 6.1.0-preview.4)缺少以下功能:检索REG_EXPAND_SZ注册表值的原始,表示该值存储在注册表中之前嵌入式环境变量引用(例如{{ 1}})进行扩展(内插)。

因此需要直接使用.NET API:

%USERPROFILE%

请参见[Microsoft.Win32.RegistryKey].GetValue()

注意:(Get-Item -Path HKCU:\Environment).GetValue( 'PATH', # the registry-value name $null, # the default value to return if no such value exists. 'DoNotExpandEnvironmentNames' # the option that suppresses expansion ) 由PowerShell自动转换为'DoNotExpandEnvironmentNames';您也可以使用后者。