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

能否使用PowerShell的Remove-Item命令按Company字段删除指定项?

基于Windows Company字段用PowerShell的Remove-Item执行删除操作的实现方案

当然可以做到!不过得先明确你要操作的对象类型——毕竟不同对象(比如文件、注册表项)获取Company字段的方式略有差异,我给你分常见场景详细说明:

一、针对文件的操作

文件的Company字段属于文件的详细属性,可以通过Get-ChildItem结合文件版本信息来获取并筛选。具体步骤如下:

  1. 先定义目标公司列表:
$companyList = "Sage (UK) Limited","Sage (UK) Ltd","Sage","The Sage Group plc","SAGE Software Ltd"
  1. 筛选并删除符合条件的文件(示例路径为C:\Program Files,可按需修改):
Get-ChildItem -Path "C:\Program Files" -Recurse -File | 
    Where-Object { $companyList -contains $_.VersionInfo.CompanyName } | 
    Remove-Item -WhatIf

实用提示:

  • -Recurse参数会遍历目标路径下的所有子目录,不需要递归时可直接去掉
  • -WhatIf是测试模式,只会输出要删除的文件列表而不会真执行,确认结果符合预期后再移除该参数
  • 若遇到被占用的文件无法删除,可尝试添加-Force参数强制删除(谨慎使用,避免误删关键文件)

二、针对注册表项的操作

很多软件的卸载信息存储在注册表中,这里的Publisher字段就对应你提到的Company属性。以卸载项为例:

  1. 同样先定义目标公司列表:
$companyList = "Sage (UK) Limited","Sage (UK) Ltd","Sage","The Sage Group plc","SAGE Software Ltd"
  1. 筛选并删除符合条件的注册表项:
Get-Item -Path "HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*" | 
    Where-Object { $companyList -contains $_.GetValue("Publisher") } | 
    Remove-Item -Recurse -WhatIf

实用提示:

  • 操作注册表必须以管理员身份运行PowerShell,否则会因权限不足报错
  • -Recurse参数用于删除包含子项的注册表项,若目标项没有子项可省略
  • 务必先用-WhatIf测试,避免误删系统关键注册表项导致异常

通用注意事项

  • 核心原则:先测试再执行,-WhatIf和-Confirm参数是避免误操作的关键
  • 其他类型对象(比如WMI类中的软件信息)的处理思路一致:先获取对象→筛选Company字段匹配目标列表→执行对应删除命令
  • 系统保护的对象可能无法直接删除,需调整权限或进入安全模式操作

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 06:53:42