在"系统属性">"环境变量">"用户变量"中,PATH>包含:
%USERPROFILE%DownloadsSysinternalsSuite;%USERPROFILE%bin
可以使用以下命令检索该值:
PS C:srct> (Get-ItemProperty -Path HKCU:Environment).PATH
C:UserslitDownloadsSysinternalsSuite;C:Userslitbin
有没有办法在没有变量扩展的情况下获得原始值?似乎Get-ItemProperty
需要一个-Raw
开关。
PetSerAl,和以前很多次一样,在对这个问题的简短评论中提供了一个有效的解决方案。
实际上,PowerShell 的Get-ItemProperty
/Get-ItemPropertyValue
cmdlet 目前 (PowerShell 7.3.0(缺乏检索REG_EXPAND_SZ
注册表值的原始值的能力,这意味着在嵌入式环境变量引用(例如,%USERPROFILE%
(展开(插值(之前存储在注册表中的值。
因此,需要直接使用 .NET API:
(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
)
请参阅[Microsoft.Win32.RegistryKey].GetValue()
。
注意:PowerShell 会自动将'DoNotExpandEnvironmentNames'
转换为[Microsoft.Win32.RegistryValueOptions]::DoNotExpandEnvironmentVariables
;您也可以使用后者。