当你去读取一个类型为StringExpand类型的注册表值时,它总是会在你的文本中自动展开所有的环境变量。
这里有个简单的例子从注册表获取系统磁盘路径:
$path = 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion' $key = Get-ItemProperty -Path $path $key.DevicePath #输出结果:C:\Windows\inf;C:\Windows\DRV
这个结果一定是一个实际路径,OK,除非你想获得它的最初形态(未展开的)注册表值,请使用这个例子。
$path = 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion' $key = Get-Item -Path $path $key.GetValue('DevicePath', '', 'DoNotExpandEnvironmentNames') #输出结果:%SystemRoot%\inf;%SystemRoot%\DRV
通过这种方式访问注册表你将可以获得其它信息:你现在也可以获得值得类型:
$path = 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion' $key = Get-Item -Path $path $key.GetValueKind('DevicePath') #输出结果:ExpandString
原文地址:Reading StringExpand Registry Values
本文链接: https://www.pstips.net/reading-stringexpand-registry-values.html
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!
再次被PowerShell的Dev雷到了,破天荒的方便啊!
不必这样,作为封闭系统他本应该这样,与开源系统相比,缺点也一样很多。