You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用PDQ自动化PowerShell/CMD查找删除不同设备的Rapid7相关注册表项

自动查找并删除指定注册表项实现方案

推荐方案:PowerShell脚本(适配PDQ Deploy运行环境)

你原有代码的问题在于仅提取了注册表项路径,没有补充后续删除逻辑,优化后可直接完整执行的代码如下:

# 静默查找所有匹配Rapid7 Insight Agent的注册表项,跳过权限报错
$targetKeys = Get-ChildItem -Path HKLM:\SOFTWARE\Classes\Installer\Products -Recurse -ErrorAction SilentlyContinue | 
    Where-Object { ($_.GetValueNames() | ForEach-Object { $_.GetValue($_) }) -like "*Rapid7 Insight Agent*" }

# 批量删除匹配项
if ($targetKeys) {
    $targetKeys | ForEach-Object {
        Remove-Item -Path $_.PSPath -Recurse -Force -Confirm:$false
        Write-Output "已删除匹配注册表项:$($_.PSPath)"
    }
}
else {
    Write-Output "未找到匹配的注册表项"
}

使用说明:

  • 在PDQ Deploy中新建PowerShell步骤,直接粘贴上述代码即可
  • 必须勾选以本地系统账户运行或以管理员身份运行,否则没有HKLM注册表路径的修改权限
  • 若终端限制PowerShell脚本执行,可在步骤的参数栏添加-ExecutionPolicy Bypass跳过执行策略限制

可选方案:CMD批处理脚本

如果需要用CMD步骤实现,可以用for循环自动提取reg query的返回结果作为删除参数,无需手动传递:

@echo off
:: 遍历reg query返回的所有匹配注册表路径,直接执行删除
for /f "tokens=* delims=" %%i in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Installer\Products" /f "Rapid7 Insight Agent" /s ^| findstr /i "HKEY_LOCAL_MACHINE\\SOFTWARE\\Classes\\Installer\\Products"') do (
    reg delete "%%i" /f >nul 2>&1
    echo 已删除注册表项:%%i
)

注意事项

首次上线前建议先注释删除命令,仅输出匹配到的注册表路径,确认匹配逻辑无误后再执行删除操作,避免误删其他注册表项引发系统问题。


内容的提问来源于stack exchange,提问作者Matt I.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 11:36:05