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

如何在注册表路径中间用正则执行PowerShell的Remove-Item操作?

解决PowerShell用正则匹配注册表路径删除子项的问题

你之前的写法无效,核心原因是**Remove-Item的-Path参数只支持通配符(*、?),不支持正则表达式**——你写的正则会被当作字面量路径处理,自然匹配不到目标项。

正确的思路是先筛选出符合正则的中间注册表项,再定位到其下的子路径执行删除,具体代码如下:

# 定义你的正则模式
$regexPattern = 'RegexPattern'

# 第一步:找到HKCU:\System\somePath下匹配正则的直接子项
$matchingParentItems = Get-ChildItem -Path 'HKCU:\System\somePath' -Recurse:$false | 
    Where-Object { $_.PSChildName -match $regexPattern }

# 第二步:遍历每个匹配项,删除其下MorePath中的所有子项
foreach ($item in $matchingParentItems) {
    $targetSubPath = Join-Path -Path $item.PSPath -ChildPath 'MorePath\*'
    # 加上-Force处理权限限制,-ErrorAction避免不存在的项抛出错误
    Remove-Item -Path $targetSubPath -Recurse -Force -ErrorAction SilentlyContinue
}

关键说明:

  • Get-ChildItem -Recurse:$false确保只查找somePath的直接子项,避免递归遍历无关的深层路径;
  • Where-Object { $_.PSChildName -match $regexPattern }用PowerShell的-match运算符执行正则匹配,筛选出符合条件的注册表项;
  • Join-Path安全拼接注册表路径,避免手动拼接字符串出现格式错误。

内容的提问来源于stack exchange,提问作者user20682592

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 20:25:11