Tự làm Tool dọn rác Windows bằng PowerShell siêu nhẹ

Chào các bạn! Máy tính chạy chậm, ổ đĩa C báo đỏ luôn là nỗi ám ảnh với nhiều người. Thay vì phải cài đặt các phần mềm dọn rác bên thứ ba nặng nề và đầy quảng cáo, hôm nay Hoàng Quân Agency sẽ hướng dẫn các bạn tự tạo một Công cụ dọn dẹp hệ thống bằng PowerShell cực kỳ mạnh mẽ, an toàn và hoàn toàn miễn phí.

Công cụ này được thiết kế để tự động xóa các tệp tạm thời, các tệp không dùng đến, dọn dẹp bộ nhớ đệm trình duyệt, thùng rác và nhiều hơn thế nữa. Đặc biệt, nó có hỗ trợ "chế độ chạy thử" để bạn xem trước những gì sẽ bị xóa. Dù bạn không biết gì về lập trình, chỉ cần làm theo từng bước dưới đây là chắc chắn thành công!


Phần 1: Tạo tệp Kịch bản Dọn dẹp (Script)

Đầu tiên, chúng ta sẽ tạo "bộ não" cho công cụ dọn dẹp này.

  1. Mở ứng dụng Notepad có sẵn trên máy tính Windows của bạn.
  2. Sao chép toàn bộ đoạn mã trong khung xám bên dưới và dán vào Notepad.
  3. Trên Notepad, chọn File > Save As...
  4. Ở mục Save as type, chọn All Files (*.*).
  5. Ở mục File name, đặt tên là CleanUp-Tool.ps1 (bắt buộc phải có đuôi .ps1).
  6. Lưu tệp này ra ngoài màn hình Desktop hoặc ổ D cho dễ tìm nhé.

#================================================================================
# CÔNG CỤ DỌN DẸP VÀ TỐI ƯU HỆ THỐNG BẰNG POWERSHELL
#================================================================================

# CẤU HÌNH BIẾN
$dryRun = $false # Đặt thành $true nếu chỉ muốn xem trước
$oldFileDays = 90
$largeFileSizeMB = 500

$tempFolders = @(
    "$env:TEMP",
    "$env:SystemRoot\Temp",
    "$env:SystemRoot\Prefetch"
)

$browserCaches = @(
    "$env:LOCALAPPDATA\Google\Chrome\User Data\Default\Cache",
    "$env:LOCALAPPDATA\Microsoft\Edge\User Data\Default\Cache"
)

$largeFilePaths = @(
    "$env:USERPROFILE\Downloads"
)

# HÀM HỖ TRỢ HIỂN THỊ MÀU SẮC
function Write-Log {
    param ([string]$Message, [string]$Color = "White")
    Write-Host $Message -ForegroundColor $Color
}

# HÀM XÓA AN TOÀN
function Remove-ItemSafely {
    param ([string]$Path)
    if ($dryRun) {
        Write-Log "  [CHẠY THỬ] Sẽ xóa: $Path" -Color Yellow
    } else {
        try {
            Remove-Item -Path $Path -Recurse -Force -ErrorAction Stop
        } catch {
            Write-Log "  [LỖI] Không thể xóa '$Path'" -Color DarkRed
        }
    }
}

# 1. KIỂM TRA QUYỀN QUẢN TRỊ VIÊN
if (-NOT ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)) {
    Write-Log "LỖI: Bạn phải chạy kịch bản này bằng 'Run as Administrator'." -Color Red
    Write-Host "`nNhấn phím Enter để thoát..." -ForegroundColor Yellow
    Read-Host
    exit
}

if ($dryRun) {
    Write-Log "=== ĐANG CHẠY CHẾ ĐỘ CHẠY THỬ (DRY RUN) - KHÔNG XÓA DỮ LIỆU ===" -Color Cyan
} else {
    Write-Log "=== ĐANG CHẠY CHẾ ĐỘ DỌN DẸP THỰC TẾ ===" -Color Magenta
}

# 2. XÓA TỆP TẠM THỜI
Write-Log "`n[1/6] Đang dọn dẹp tệp tạm thời hệ thống..." -Color Cyan
foreach ($folder in $tempFolders) {
    if (Test-Path $folder) {
        Write-Log "  Đang quét: $folder"
        Get-ChildItem -Path $folder -Recurse -Force -ErrorAction SilentlyContinue | ForEach-Object {
            Remove-ItemSafely -Path $_.FullName
        }
    }
}

# 3. XÓA CACHE TRÌNH DUYỆT
Write-Log "`n[2/6] Đang dọn dẹp bộ nhớ đệm trình duyệt..." -Color Cyan
foreach ($cache in $browserCaches) {
    if (Test-Path $cache) {
        Write-Log "  Đang làm sạch cache: $cache"
        Get-ChildItem -Path $cache -Recurse -Force -ErrorAction SilentlyContinue | ForEach-Object {
            Remove-ItemSafely -Path $_.FullName
        }
    }
}

# 4. XÓA CACHE WINDOWS UPDATE
Write-Log "`n[3/6] Đang dọn dẹp bộ nhớ đệm Windows Update..." -Color Cyan
if (-not $dryRun) {
    Stop-Service -Name wuauserv -Force -ErrorAction SilentlyContinue
}
$wuDownload = "$env:SystemRoot\SoftwareDistribution\Download"
if (Test-Path $wuDownload) {
    Get-ChildItem -Path $wuDownload -Recurse -Force -ErrorAction SilentlyContinue | ForEach-Object {
        Remove-ItemSafely -Path $_.FullName
    }
}
if (-not $dryRun) {
    Start-Service -Name wuauserv -ErrorAction SilentlyContinue
}

# 5. XÓA DNS CACHE
Write-Log "`n[4/6] Đang xóa bộ nhớ đệm DNS..." -Color Cyan
if (-not $dryRun) {
    Clear-DnsClientCache -ErrorAction SilentlyContinue
    Write-Log "  Đã xóa DNS Cache thành công." -Color Green
}

# 6. DỌN THÙNG RÁC
Write-Log "`n[5/6] Đang làm sạch Thùng rác..." -Color Cyan
if (-not $dryRun) {
    Clear-RecycleBin -Force -ErrorAction SilentlyContinue
    Write-Log "  Đã dọn dẹp Thùng rác." -Color Green
}

# 7. TÌM TỆP CŨ VÀ LỚN
Write-Log "`n[6/6] Đang tìm các tệp cũ và lớn..." -Color Cyan
$cutoffDate = (Get-Date).AddDays(-$oldFileDays)
$minSizeBytes = $largeFileSizeMB * 1MB
foreach ($path in $largeFilePaths) {
    if (Test-Path $path) {
        Get-ChildItem -Path $path -Recurse -File -Force -ErrorAction SilentlyContinue | Where-Object {
            $_.LastWriteTime -lt $cutoffDate -and $_.Length -gt $minSizeBytes
        } | ForEach-Object {
            $fileSize = [math]::Round($_.Length / 1MB, 2)
            Write-Log "  [GỢI Ý XÓA] $($_.FullName) ($(${fileSize})MB)" -Color Yellow
        }
    }
}

Write-Log "`n================================================================================" -Color Gray
Write-Log "Hoàn tất kịch bản dọn dẹp hệ thống!" -Color Green

Write-Host "`nNhấn phím Enter để đóng cửa sổ này..." -ForegroundColor Yellow
Read-Host
  

Phần 2: Cách chạy công cụ chuẩn nhất (Không bị tự tắt màn hình)

Một số bạn khi click đúp chuột vào tệp vừa tạo sẽ thấy màn hình xanh chớp lên rồi tắt ngay. Đó là do tính năng bảo mật mặc định của Windows. Để chạy thành công, bạn làm theo các bước sau:

  1. Nhấn phím Windows, gõ chữ PowerShell.
  2. Chọn Run as Administrator (Chạy dưới quyền quản trị).
  3. Tại cửa sổ màu xanh hiển thị ra, hãy copy dòng lệnh này dán vào và nhấn Enter:
    Set-ExecutionPolicy Bypass -Scope Process -Force
  4. Bây giờ, bạn chỉ việc dùng chuột kéo và thả tệp CleanUp-Tool.ps1 vào thẳng cửa sổ PowerShell đó, rồi nhấn Enter. Công cụ sẽ tự động chạy và dọn dẹp sạch sẽ!

Phần 3: Thiết lập dọn dẹp tự động hàng tuần (Cho người lười)

Nếu bạn không muốn mỗi tuần phải thao tác thủ công, chúng ta có thể nhờ "quản gia" Task Scheduler của Windows làm hộ một cách âm thầm.

  1. Mở Start Menu, gõ và mở Task Scheduler.
  2. Ở cột bên phải, nhấp vào Create Task...
  3. Tab General: Đặt tên tác vụ (ví dụ: Auto Cleanup). Tích chọn Run with highest privileges (để cấp quyền Admin).
  4. Tab Triggers: Nhấn New, chọn Weekly (Hàng tuần), chọn ngày và giờ bạn muốn máy tính tự dọn dẹp, rồi nhấn OK.
  5. Tab Actions: Nhấn New. Ô Program/scriptpowershell.exe. Ở ô Add arguments, copy và dán đoạn sau (nhớ thay đổi đường dẫn tới file của bạn):
    -ExecutionPolicy Bypass -WindowStyle Hidden -File "C:\Đường\dẫn\của\bạn\CleanUp-Tool.ps1"
  6. Tab Conditions: (Dành cho Laptop) Bỏ tích ô Start the task only if the computer is on AC power để công cụ vẫn chạy khi dùng pin.
  7. Nhấn OK và nhập mật khẩu máy tính của bạn nếu được yêu cầu để lưu lại.

Vậy là xong! Máy tính của bạn từ nay sẽ luôn được giữ trong tình trạng sạch sẽ và mượt mà nhất mà không tốn của bạn một giây phút nào.

Bạn có gặp khó khăn ở bước nào không? Hãy để lại bình luận bên dưới để mình hỗ trợ nhé! Chúc các bạn thao tác thành công.