使用 Powershell 查找和显示注册表空键

Find and display registry empty keys with Powershell

如何使用 Powershell 查找和显示 Windows 注册表空键?

知道 GetChild-Item 可以使用 HKLM:\HKCU:\ 搜索注册表。

我试过了

Get-ChildItem "HKLM:\" -Recurse | 
    Where Property -like '' | foreach {
    $_.GetValue("DisplayName")
}

但不起作用。

对于空键,我指的是只有默认值且没有子键的键。

然后使用>导出到文本文件,分析结果并删除不需要的内容。

所以您要查找的注册表项没有子项,也没有 属性 - 除了默认值。因为当您使用 Get-ChildItem 时会提供这两个属性,所以您只需要过滤它们:

Get-ChildItem -Path 'REGISTRY::HKEY_LOCAL_MACHINE', 'REGISTRY::HKEY_CURRENT_USER' -Recurse -ErrorAction SilentlyContinue |
    Where-Object {
        -not $_.SubKeyCount -and
        -not $_.Property
    } | 
        Select-object -Property PSPath

在不需要的情况下从注册表中删除密钥仍然是一个坏主意。

修改了@Olaf 解决方案 -ExpandProperty 以处理长注册表路径,Name 注册表路径前没有前缀

Get-ChildItem -Path 'HKCU:', 'HKLM:' -r -ea si |
    Where-Object {
        -not $_.SubKeyCount -and
        -not $_.Property
    } | 
        Select-object -ExpandProperty Name > list_empty.txt