PowerShell

关注公众号 jb51net

关闭
首页 > 脚本专栏 > PowerShell > PowerShell清理C盘

使用PowerShell编写一个安全可控的C盘清理脚本

作者:Hello.Reader

Windows C 盘空间变小,通常不是某一个文件导致的,而是多个目录长期积累造成的,本文就来使用PowerShell编写一个安全可控的C盘清理脚本吧

一、为什么 C 盘会越来越小

Windows C 盘空间变小,通常不是某一个文件导致的,而是多个目录长期积累造成的。

常见来源如下:

类型常见目录是否适合清理
用户临时文件C:\Users\用户名\AppData\Local\Temp可以清理
系统临时文件C:\Windows\Temp可以清理
Windows 更新缓存C:\Windows\SoftwareDistribution\Download可以清理
回收站$Recycle.Bin可以清理
错误报告C:\ProgramData\Microsoft\Windows\WER可以清理
缩略图缓存AppData\Local\Microsoft\Windows\Explorer可以清理
组件存储C:\Windows\WinSxS不能手动删,需用 DISM
安装缓存C:\Windows\Installer不建议删除

C 盘清理最重要的不是“删得多”,而是“删得准”。缓存类文件可以清理,但系统安装缓存、用户个人资料和程序安装目录不应该被脚本自动删除。

二、哪些文件可以安全清理

本脚本主要清理以下内容。

1. 当前用户临时文件

路径通常是:

C:\Users\你的用户名\AppData\Local\Temp

在 PowerShell 中可以通过变量表示:

$env:TEMP

这里存放的是软件运行过程产生的临时文件,例如安装包缓存、解压缓存、浏览器临时文件等。

2. 系统临时文件

路径是:

C:\Windows\Temp

这是 Windows 系统级临时目录,需要管理员权限才能清理得更完整。

3. Windows Update 下载缓存

路径是:

C:\Windows\SoftwareDistribution\Download

Windows 更新下载的补丁文件会缓存在这里。更新完成后,这些文件通常可以清理。

4. 回收站

很多时候我们删除了大文件,但只是进入了回收站,并没有真正释放磁盘空间。

5. 缩略图缓存

Windows 资源管理器会为图片、视频、PDF 等生成缩略图缓存。文件多的时候,这部分也会占用不少空间。

6. Windows 错误报告

路径包括:

C:\ProgramData\Microsoft\Windows\WER\ReportArchive
C:\ProgramData\Microsoft\Windows\WER\ReportQueue

这些是系统或软件崩溃后生成的错误报告缓存。

三、哪些目录不建议手动删除

清理 C 盘时,最容易出问题的不是没有清理,而是乱清理

下面这些目录不建议用脚本直接删除:

C:\Windows\Installer
C:\Windows\WinSxS
C:\Program Files
C:\Program Files (x86)
C:\Users\用户名\AppData\Roaming
C:\Users\用户名\Desktop
C:\Users\用户名\Documents
C:\Users\用户名\Downloads

尤其是:C:\Windows\Installer

这个目录虽然可能很大,但它保存了 MSI 安装包缓存。乱删之后,可能导致软件无法修复、升级或卸载。

再比如:C:\Windows\Installer

这是 Windows 组件存储目录,不能手动删除。正确方式是使用:

DISM.exe /Online /Cleanup-Image /StartComponentCleanup

四、C 盘清理脚本设计思路

脚本的核心原则是:

整体流程如下:

五、PowerShell 完整清理脚本

脚本文件已经放在压缩包中:

scripts/Clean-CDrive.ps1

执行方式:

Set-ExecutionPolicy Bypass -Scope Process -Force
.\Clean-CDrive.ps1

核心清理逻辑包括:

Clear-Folder -Path $env:TEMP -Name "当前用户临时文件"
Clear-Folder -Path "C:\Windows\Temp" -Name "Windows 系统临时文件"
Clear-Folder -Path "C:\Windows\SoftwareDistribution\Download" -Name "Windows Update 下载缓存"
Clear-RecycleBin -Force -ErrorAction SilentlyContinue
DISM.exe /Online /Cleanup-Image /StartComponentCleanup

完整脚本较长,建议直接使用压缩包中的 .ps1 文件,避免复制时因换行或编码导致执行失败。

六、BAT 一键启动脚本

为了方便使用,可以直接运行压缩包中的:

scripts/run-clean-c.bat

使用方式:

目录结构如下:

C盘清理工具
├── Clean-CDrive.ps1
└── run-clean-c.bat

七、如何确认临时文件是否清理成功

清理完成后,可以手动打开用户临时目录:

explorer $env:TEMP

也可以打开系统临时目录:

explorer C:\Windows\Temp

如果目录里只剩少量文件,说明清理是正常的。

有些文件无法删除,是因为正在被程序占用,例如:

这类文件被跳过是正常现象,不建议强制结束大量进程去删除它们。

八、常见问题说明

1. 为什么有些临时文件删不掉?

因为文件正在被系统或软件占用。脚本使用的是安全删除方式:

Remove-Item -Recurse -Force -ErrorAction SilentlyContinue

无法删除的文件会自动跳过,不会中断整个清理流程。

2. 能不能直接删除 C:\Windows\Installer?

不建议。这个目录是 Windows Installer 缓存目录,里面可能保存软件安装、修复、卸载所需的 MSI/MSP 缓存文件。误删之后可能出现软件无法卸载、软件无法升级、软件无法修复等问题。

3. 能不能直接删除 C:\Windows\WinSxS?

不能手动删除。正确方式是使用 DISM:

DISM.exe /Online /Cleanup-Image /StartComponentCleanup

这也是脚本中采用的方式。

4. 清理 Windows Update 缓存会不会影响系统?

一般不会影响已经安装完成的补丁。脚本清理的是下载缓存目录:

C:\Windows\SoftwareDistribution\Download

如果以后需要更新,Windows 会重新下载所需文件。

5. 为什么脚本要停止 wuauserv 和 bits 服务?

因为 Windows Update 下载缓存可能正在被以下服务占用:

wuauserv:Windows Update 服务
bits:后台智能传输服务

停止服务后再清理缓存,成功率更高。清理完成后,脚本会重新启动它们。

九、清理项对比表

清理项是否包含在脚本中风险等级说明
用户 Temp常规临时文件
系统 Temp需要管理员权限
Windows Update 下载缓存会自动重新下载
回收站删除后不易恢复
缩略图缓存系统会自动重建
错误报告缓存主要用于问题诊断
Delivery Optimization 缓存Windows 分发优化缓存
WinSxS否,使用 DISM不能手动删除
Windows Installer不建议清理
用户下载目录可能包含个人文件
桌面、文档个人数据,不自动删除

十、总结

C 盘清理的核心不是“删得越多越好”,而是要做到:

本文提供的 PowerShell 脚本主要清理用户临时文件、系统临时文件、Windows Update 缓存、错误报告缓存、缩略图缓存、回收站、Delivery Optimization 缓存和 Windows 组件存储缓存。对于日常电脑维护来说,这个脚本已经能覆盖大部分安全清理场景。执行完成后,建议重启一次电脑,让系统释放仍被占用的缓存文件。

以上就是使用PowerShell编写一个安全可控的C盘清理脚本的详细内容,更多关于PowerShell清理C盘的资料请关注脚本之家其它相关文章!

您可能感兴趣的文章:
阅读全文