批量远程清理Windows.old目录的脚本需求
批量远程清理Windows.old目录的脚本需求
针对你遇到的批量清理旧工作站Windows.old目录的痛点,我整理了几个无需用户交互、适合通过PDQ Deploy远程执行的方案,都是经过实践验证的:
方案1:使用DISM原生命令(推荐)
DISM是Windows自带的系统维护工具,专门有清理旧系统文件的命令,全程无交互,管理员权限即可执行,不会触发任何弹窗:
DISM /Online /Cleanup-Image /StartComponentCleanup /ResetBase
说明:
/StartComponentCleanup会清理组件存储中的冗余文件,包括Windows.old里的旧系统备份/ResetBase参数会移除所有已安装的更新组件备份,确保彻底释放空间(注意:执行后无法卸载已安装的Windows更新)
方案2:PowerShell强制删除目录
如果DISM的清理不够彻底,或者你需要直接定向删除Windows.old,可以用这个PowerShell脚本,它会先获取目录所有权、修改权限,再强制删除:
# 检查Windows.old目录是否存在 if (Test-Path "$env:SystemDrive\Windows.old") { # 递归获取目录所有权 takeown /F "$env:SystemDrive\Windows.old" /R /D Y # 赋予管理员完全控制权限 icacls "$env:SystemDrive\Windows.old" /grant administrators:F /T # 强制递归删除目录,忽略错误 Remove-Item "$env:SystemDrive\Windows.old" -Recurse -Force -ErrorAction SilentlyContinue }
说明:
- 这个脚本会绕过Windows对Windows.old的系统保护机制,确保删除成功
- 全程无任何用户提示,适合批量远程执行
方案3:配置Cleanmgr自动清理预设
你之前尝试的cleanmgr.exe /SAGERUN:0其实可以实现无交互,只需要先配置好清理预设:
- 在一台测试机上以管理员身份运行
cleanmgr.exe /SAGESET:0 - 在弹出的窗口中勾选「以前的Windows安装」以及你需要清理的其他项,点击确定保存预设
- 导出注册表项
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VolumeCaches(这是Cleanmgr的预设配置) - 通过PDQ Deploy先把这个注册表项推送到所有目标工作站,再远程执行
cleanmgr.exe /SAGERUN:0,就会自动按照预设清理,无需用户干预
注意事项:
- 所有方案都必须以管理员权限运行,PDQ Deploy中要指定管理员账号作为运行身份
- 清理Windows.old后将无法回滚到之前的Windows版本,建议提前确认用户没有回滚需求
- 先在少量测试机上验证脚本效果,再批量部署到全量工作站
备注:内容来源于stack exchange,提问作者PedalTech




