使用 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
如何使用 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