Get-ChildItem 注册表项,仅提取项名称

Get-ChildItem registry key, extract key name only

我可以在注册表的 Uninstalls 键中得到一个键,对于特定安装的程序,像这样...

$displayName = 'Parallels Tools'
$key = 'Registry::HKLM\Software\Microsoft\Windows\CurrentVersion\Uninstall'
Get-ChildItem -Path:$key | Where-Object {$_.GetValue('DisplayName') -eq $displayName}

... 结果将是 table,名称列仅显示 GUID 密钥名称,属性列显示密钥中的所有属性。但是,如果我尝试只获取 GUID,我 运行 就会遇到问题。 headers 列建议 (Get-ChildItem -Path:$key | Where-Object {$_.GetValue('DisplayName') -eq $displayName}).Name 应该有效,但它显示了整个路径,(Get-ChildItem -Path:$key | Where-Object {$_.GetValue('DisplayName') -eq $displayName}).ToString() 也是如此。转储到控制台是否有一些秘诀?我知道我可以通过多种方式获取 GUID,Split-Path,如果我想验证密钥是 GUID 还是只是一个名称,则可以使用正则表达式。但我很好奇是否有一种方法可以利用将 object 转储到控制台所使用的相同方法?

如果我理解你的问题你可以试试:

Get-ChildItem -Path:$key | Select-Object Name | Split-Path -Leaf

查看 default formatter for RegistryKey objects,默认视图中的 Name 列是使用 .PSChildName 属性 填充的,它是完整的提供商路径。

提供商路径的“父”部分存储在 .PSParentPath 属性。