以 管理员身份 打开 PowerShell(右键 → "以管理员身份运行",或 Win+X → "终端(管理员)")
一、清理临时文件
# 清理用户临时目录
Remove-Item -Path "$env:TEMP\*" -Recurse -Force -ErrorAction SilentlyContinue
# 清理系统临时目录
Remove-Item -Path "C:\Windows\Temp\*" -Recurse -Force -ErrorAction SilentlyContinue
二、清理预读取缓存(Prefetch)
Remove-Item -Path "C:\Windows\Prefetch\*" -Force -ErrorAction SilentlyContinue
三、清理 Windows 更新缓存
# 停止更新相关服务
Stop-Service -Name wuauserv -Force -ErrorAction SilentlyContinue
Stop-Service -Name bits -Force -ErrorAction SilentlyContinue
# 删除更新下载缓存
Remove-Item -Path "C:\Windows\SoftwareDistribution\Download\*" -Recurse -Force -ErrorAction SilentlyContinue
# 重启服务
Start-Service -Name wuauserv
Start-Service -Name bits
四、清空回收站
# 清空所有盘符的回收站(-Confirm:$false 跳过确认)
Clear-RecycleBin -Force -ErrorAction SilentlyContinue
五、清理缩略图 / 图标缓存
# 缩略图缓存
Remove-Item -Path "$env:LOCALAPPDATA\Microsoft\Windows\Explorer\thumbcache_*.db" -Force -ErrorAction SilentlyContinue
# 图标缓存
Remove-Item -Path "$env:LOCALAPPDATA\IconCache.db" -Force -ErrorAction SilentlyContinue
六、清理 DNS / 网络缓存
# 刷新 DNS 缓存
Clear-DnsClientCache
# 重置 Winsock(需重启生效)
netsh winsock reset
七、清理系统事件日志
# 获取所有日志名称并逐一清除
Get-WinEvent -ListLog * | ForEach-Object {
[System.Diagnostics.Eventing.Reader.EventLogSession]::GlobalSession.ClearLog($_.LogName)
} 2>$null
# 或者用 wevtutil(更快)
wevtutil el | ForEach-Object { wevtutil cl $_ } 2>$null
八、清理系统组件存储(WinSxS)
# 常规清理(安全)
Dism.exe /Online /Cleanup-Image /StartComponentCleanup
# 深度清理(不可回滚更新)
Dism.exe /Online /Cleanup-Image /StartComponentCleanup /ResetBase
# 清理 SP 备份
Dism.exe /Online /Cleanup-Image /SPSuperseded
九、调用系统磁盘清理工具
# 先配置清理项(弹出设置窗口,勾选后确定)
cleanmgr /sageset:99
# 按配置执行清理(静默)
cleanmgr /sagerun:99
十、清理浏览器缓存(Edge / Chrome)
# Edge 缓存
Remove-Item -Path "$env:LOCALAPPDATA\Microsoft\Edge\User Data\Default\Cache\*" -Recurse -Force -ErrorAction SilentlyContinue
# Chrome 缓存
Remove-Item -Path "$env:LOCALAPPDATA\Google\Chrome\User Data\Default\Cache\*" -Recurse -Force -ErrorAction SilentlyContinue
⚠️ 执行前请先关闭对应浏览器。
十一、一键清理脚本(推荐保存为 .ps1)
#Requires -RunAsAdministrator
# ============================================
# Windows 垃圾一键清理脚本 (PowerShell)
# 用法: 右键 → 使用 PowerShell 以管理员运行
# ============================================
$ErrorActionPreference = "SilentlyContinue"
$totalFreed = 0
function Get-FolderSize($path) {
if (Test-Path $path) {
return (Get-ChildItem $path -Recurse -Force -ErrorAction SilentlyContinue |
Measure-Object -Property Length -Sum).Sum
}
return 0
}
function Clean-Folder($path, $label) {
$before = Get-FolderSize $path
Remove-Item -Path "$path\*" -Recurse -Force -ErrorAction SilentlyContinue
$after = Get-FolderSize $path
$freed = [math]::Max(0, $before - $after)
$script:totalFreed += $freed
Write-Host (" [√] {0,-20} 释放: {1:N2} MB" -f $label, ($freed / 1MB)) -ForegroundColor Green
}
Write-Host "`n===== Windows 垃圾清理开始 =====`n" -ForegroundColor Cyan
# 1. 临时文件
Clean-Folder $env:TEMP "用户临时文件"
Clean-Folder "C:\Windows\Temp" "系统临时文件"
# 2. 预读取缓存
Clean-Folder "C:\Windows\Prefetch" "预读取缓存"
# 3. Windows 更新缓存
Stop-Service wuauserv -Force
Stop-Service bits -Force
Clean-Folder "C:\Windows\SoftwareDistribution\Download" "更新缓存"
Start-Service wuauserv
Start-Service bits
# 4. 缩略图缓存
Remove-Item "$env:LOCALAPPDATA\Microsoft\Windows\Explorer\thumbcache_*.db" -Force
Write-Host " [√] 缩略图缓存已清理" -ForegroundColor Green
# 5. 回收站
Clear-RecycleBin -Force
Write-Host " [√] 回收站已清空" -ForegroundColor Green
# 6. DNS 缓存
Clear-DnsClientCache
Write-Host " [√] DNS 缓存已刷新" -ForegroundColor Green
# 7. 系统日志
wevtutil el | ForEach-Object { wevtutil cl $_ } 2>$null
Write-Host " [√] 系统事件日志已清理" -ForegroundColor Green
# 8. DISM 组件清理
Write-Host "`n [*] 正在清理系统组件(可能需要几分钟)..." -ForegroundColor Yellow
Dism.exe /Online /Cleanup-Image /StartComponentCleanup | Out-Null
Write-Host " [√] 系统组件清理完成" -ForegroundColor Green
# 汇总
Write-Host "`n===== 清理完成!共释放: $([math]::Round($totalFreed / 1MB, 2)) MB =====`n" -ForegroundColor Cyan
pause
运行方式
# 如果遇到执行策略限制,先执行:
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
# 然后运行脚本
.\Clean-Windows.ps1
⚠️ 注意事项
| 项目 | 说明 |
|---|---|
| 权限 | 必须以管理员身份运行 |
-ErrorAction SilentlyContinue |
跳过被占用/无权限的文件,避免报错中断 |
/ResetBase |
执行后无法卸载已安装的更新 |
| 浏览器缓存 | 清理前需关闭浏览器 |
| 事件日志 | 清除后不可恢复,排查问题前慎用 |
| 建议频率 | 常规清理每月一次;DISM 每季度一次即可 |