在 Win2008R2 上的 PowerShell 2.0 中,如果我想从注册表项中获得与“REG QUERY”相同的输出,以可读的格式,使用来自特定注册表项的值,如下所示:
reg query hkcu\Software\Microsoft\CharMap
HKEY_CURRENT_USER\Software\Microsoft\CharMap
Advanced REG_DWORD 0x0
CodePage REG_SZ Unicode
Font REG_SZ Arial
我将如何使用 PowerShell 做到这一点?PowerShell 的行为再次让我感到困惑。
获取项目属性示例:
Get-ItemProperty HKCU:\Software\Microsoft\CharMap
PSPath : Microsoft.PowerShell.Core\Registry::HKEY_CURRENT_USER\Software\Microsoft\CharMap
PSParentPath : Microsoft.PowerShell.Core\Registry::HKEY_CURRENT_USER\Software\Microsoft
PSChildName : CharMap
PSDrive : HKCU
PSProvider : Microsoft.PowerShell.Core\Registry
Advanced : 0
CodePage : Unicode
Font : Arial
在我上面的人为示例中,我想查看“高级”、“代码页”和“字体”,而不是任何 PowerShell 元数据(以 PS 开头的名称)。遗憾的是,过滤名称“PS”对我不起作用,因为我并没有真正尝试阅读 MS Windows 字符映射设置,我只是选择它们作为可能每个使用 Windows 的人都有的注册表项,所以每个人都可以看到多么彻底不同的使用PowerShell的体验是看注册表,比方说REG.EXE
程序。任何人可能只想从注册表项中获取注册表值而不获取任何元数据是有原因的,并且任何在 PowerShell 中编写工具的人都可能希望完成这个简单的任务。
我希望输出类似于REG QUERY
但仍采用本机 PowerShell 格式,而不仅仅是扁平化为文本。我已经用谷歌搜索并搜索了所有内容,似乎无法弄清楚这一点。
例如,我希望能够这样做:
$all = GetRealRegistryKeysFrom( HKCU:\Software\Microsoft\CharMap )
for ($item in $all) { ... }
更新使用下面的功能,效果很好......
例子Get-RegistryKeyPropertiesAndValues -path HKCU:\Software\.....