Ai không muốn thành pháp sư nói vài câu để phép màu xảy ra? Chúng tôi không thể dạy bạn làm pháp sư, nhưng có thể chỉ cách làm chút "phép màu" máy tính.
Nếu máy Windows chạy Windows 7, bạn có PowerShell. Cũng, nếu máy chạy Windows 7, hãy cập nhật ngay vì bảo mật.

Nhưng bài này không chỉ cho người Windows. Phiên bản PowerShell mới nhất miễn phí, cài và dùng được trên Mac và Linux.
Điều đó quan trọng vì kỹ năng PowerShell áp dụng cho hầu hết máy tính giờ. Ai biết? Bạn có thể mang kỹ năng này lên cấp độ cao và theo đuổi sự nghiệp CNTT.
PowerShell là gì?
Câu trả lời high-tech từ Microsoft: "shell dòng lệnh thiết kế đặc biệt cho quản trị hệ thống." Nghe hù dọa. Nhưng không. Bạn chăm sóc máy tính? Có, bạn là quản trị hệ thống trong nhà.
Bạn ra lệnh máy tính bằng click và phím? Có, hãy nghĩ command-line shell như cửa sổ khác bạn gõ lệnh để ra lệnh máy tính. Bạn làm được.
PowerShell giống ngôn ngữ lập trình, nhưng không bí ẩn như hầu hết. Nó đọc khá giống tiếng Anh thường, điều Microsoft phấn đấu để non-programmer học được.
Đây là cách viết vài dòng lệnh, gọi là script, để Windows làm gì bạn muốn. Sau đó lưu dòng đó vào file và chạy bằng click hoặc lịch chạy định kỳ.
PowerShell làm được gì?
Điểm cao cấp PowerShell: tự động hóa nhiệm vụ, không lãng phí thời gian làm việc lặp lại nhàm chán. Với SysAdmin chuyên nghiệp, có thể: tạo user mới, sinh mật khẩu, gửi email chi tiết cho quản lý mới.
Làm thủ công (click/gõ) mất 5 phút đến 1 giờ trở lên. Với script đúng, SysAdmin có thể không làm bất kỳ phần nào.
Nhưng bạn muốn biết PowerShell làm gì tại nhà. Gần như bất cứ thứ bạn không thích làm lại lại. Dùng dọn ổ cứng xóa file tạm và log không cần. Đặt giờ vàng cho máy con. Đổi tên hoặc tổ chức đống file. Đó là vẻ đẹp PowerShell. Gần như mọi việc trên máy, bạn tạo script PowerShell tự động hóa chạy bằng click hoặc lịch.
Cách dùng PowerShell?
Cách dễ nhất làm việc PowerShell trong PowerShell Integrated Scripting Environment (ISE). Tìm bằng cách click Start gõ powershell ise vào thanh tìm Windows 10. Bạn thấy như dưới.

Lần đầu dùng, chạy as Administrator. Phải có quyền admin trên máy. Trong Start Menu, chuột phải PowerShell ISE, chọn Run as Administrator.

Có thể hiện cảnh báo User Access Control (UAC) hỏi chắc chắn. Click Yes.

Bây giờ nhìn PowerShell IDE. Khung trên (1) là scripting pane – nơi viết script. Khung dưới (2) là console area – chạy test script, thấy output ở đây. Cũng nơi thấy lỗi giúp sửa script. Khung bên phải (3) là command add-on – từ điển mọi lệnh PowerShell có sẵn.

PowerShell mặc định không chạy script ngoài những script có sẵn Windows. Cần đổi để chạy script riêng.
Trong scripting window, copy paste sau:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned
Phần Set-ExecutionPolicy gọi là cmdlet (đọc command-let). Cmdlet là thứ mạnh. Nghĩ như lệnh ngắn gọn cho Windows, Windows làm loạt việc phức tạp thỏa mãn lệnh.
Ví dụ: bảo con dọn phòng. Ngắn gọn. Nếu con rành dọn phòng, chúng đi làm giường, bỏ đồ giặt vào giỏ, xếp đồ chơi sách, hút bụi. Chúng hiểu cmdlet Clean-YourRoom nghĩa là tất cả đó.
Đầu cửa sổ, thấy mũi tên xanh. Click để chạy lệnh.

Phần -ExecutionPolicy bảo Set-ExecutionPolicy đặt policy gì. Là parameter. Nghĩa: "Tôi muốn bạn làm trong nguyên tắc này và cụ thể điều này." Nó bảo dùng policy RemoteSigned cụ thể.
Policy RemoteSigned quy định: PowerShell không thực thi script tải từ Internet trừ khi được ký bởi publisher tin cậy.
Gián tiếp nói PowerShell: ổn chạy script tạo local, vì những script đó không cần ký bởi publisher remote tin cậy. Giờ script PowerShell chạy được script bạn viết trên máy.
Xem script xóa file tạm. Không mạnh/thorough như CCleaner, nhưng CCleaner có vấn đề riêng.
Dùng PowerShell tạo dung lượng ổ cứng
Phân tích script dòng per dòng để thấy cách hoạt động. Cuối cùng script hoàn chỉnh để copy paste.
$TempFileLocation = "C:\Users\username\Appdata\Local\Temp\*"
Bất kỳ thứ có dấu $ trước là tên biến. Nghĩ như ví cất đồ quý. Ví nhắc $, quý trọng nghe như variable, nhớ được. Tạo ví/biến tên $TempFileLocation. Dấu = bảo PowerShell bỏ gì vào biến.
Trường hợp này: vị trí file tạm Windows – C:\Users\username\AppData\Local\Temp\*. Làm vì 2 lý do: vị trí luôn an toàn xóa file, và dùng để bảo PowerShell đi đâu xóa file.
Chỗ "username" trong đường dẫn, đổi thành tên user bạn dùng đăng nhập máy. Dấu sao (*) cuối là wildcard. Đại diện cho mọi thứ trong thư mục Temp, vì mọi thứ trong Temp là tạm và muốn xóa.
Dấu ngoặc kép quanh đường dẫn cũng quan trọng. Bảo PowerShell nội dung là string (chuỗi ký tự). Nếu số thường, không dùng ngoặc kép.
$TempFile = Get-ChildItem $TempFileLocation -Recurse
Tạo biến khác. Lần này dùng lệnh để có thứ bỏ vào biến $TempFile.
Get-ChildItem
Điều khác về cmdlet như Get-ChildItem: đọc hiểu hoàn toàn. Thấy từ đầu là động từ? Cmdlet đều bắt đầu bằng từ hành động, nên ngay lập tức biết nó làm gì. ChildItem là 2 danh từ.
Phần 2 cmdlet luôn bảo PowerShell áp dụng hành động cho gì. ChildItem nghĩa là tất cả children của parent location. Giống như: lấy tất cả file trong thư mục, file là children, thư mục là parent.
Cmdlet lấy children của gì? Mọi thứ trong biến $TempFileLocation. PowerShell đi đến vị trí bỏ vào $TempFileLocation trước, lấy tất cả child item ở đó. Sau đó bỏ vào biến $TempFile.
Cái -Recurse là gì? Bảo Get-ChildItem duyệt hết mọi thứ vị trí đó. Đừng chỉ lấy file ngay trong thư mục parent. Nếu có thư mục trong thư mục đó, lấy children của nó nữa, và children của children... Lấy hết.
$TempFileCount = ($TempFile).count
Tạo biến thứ 3 $TempFileCount, bỏ số vào. Số ở đâu? ($TempFile).count lấy số đó. .count phần đếm tất cả file vừa lưu trong $TempFile.
Tại sao làm vậy? Chủ yếu vì tốt biết bao nhiêu file rác dọn dẹp với phần còn lại script để biết hiệu quả.
if($TempFileCount -eq 0)
Thiết lập câu lệnh điều kiện. Thấy 'if'. If cái gì? If thứ trong ngoặc true hay false. Ngoặc quan trọng, nếu không If không biết so sánh gì. Đây hỏi số lưu trong $TempFileCount có bằng 0 không.
-eq viết tắt equals. Toán tử so sánh. Giống bảo con: "Nếu phòng sạch, tốt, chúng ta làm gì đó..." Câu lệnh: nếu số lưu trong $TempFileCount -equal 0 làm điều tiếp theo.
{Write-Host "There are no files in the folder $TempFileLocation" -ForegroundColor Green}
Điều xảy ra nếu $TempFileCount bằng 0. ngoặc nhọn quan trọng. Bảo PowerShell chỉ làm gì trong ngoặc nếu $TempFileCount = 0.
Ghi ra màn hình: "There are no files in the folder C:\Users\username\Appdata\Local\Temp\*". Parameter cuối -ForegroundColor bảo PowerShell chữ xanh. Dễ phân biệt lỗi (thường đỏ).
Else
Biết else nghĩa gì. Phần "phòng sạch hoặc else..." kiểm tra con dọn phòng. Điều xảy ra nếu $TempFileCount không phải 0.
{$TempFile | Remove-Item -WhatIf -Confirm:$false -Recurse -Force -WarningAction SilentlyContinue -ErrorAction SilentlyContinue}
Nói: đi đến vị trí lưu trong $TempFile. Dấu thẳng đứng sau gọi pipe. Hoạt động giống ống thật: bảo PowerShell phễu nội dung $TempFile vào cmdlet, như nước ống vào máy giặt. Cmdlet Remove-Item làm tên: xóa thứ tại vị trí đó.
Tham số -WhatIf quan trọng giai đoạn này. Bảo PowerShell chạy lệnh, nhưng chỉ thử, không xóa gì. Chỉ cho thấy gì xảy ra nếu thực sự làm.
Cho phép test lệnh không thay đổi máy. Giữ -WhatIf cho đến khi chắc script làm đúng ý muốn và không làm gì khác. Rồi xóa nó đi, script làm việc.

Tham số -Confirm:$false ngăn script hỏi có chắc xóa file. -Recurse đã biết. -Force xóa bất chấp. -WarningAction = SilentlyContinue.
Ngăn script cảnh báo về gì đang xóa. -ErrorAction = SilentlyContinue để nếu lỗi quá trình, nó tiếp tục chạy.
Dòng cuối:
Write-Host "Cleared $TempFileCount files in the folder $TempFileLocation" -ForegroundColor Green}
Giống Write-Host trước, xuất câu sau để biết chuyện gì xảy ra. Cho biết bao nhiêu file xóa từ thư mục vừa xử lý, màu xanh dễ thấy.
Xem script toàn bộ:
$TempFileLocation = "C:\Users\guymcd\Appdata\Local\Temp\*"
$TempFile = Get-ChildItem $TempFileLocation -Recurse
$TempFileCount = ($TempFile).count
if($TempFileCount -eq "0") {
Write-Host "There are no files in the folder $TempFileLocation" - ForegroundColor Green
}
Else {
$TempFile | Remove-Item -Confirm:$false -Recurse -Force -WarningAction SilentlyContinue -ErrorAction SilentlyContinue
Write-Host "Cleared $TempFileCount files in the folder $TempFileLocation" -ForegroundColor Green
}
Copy paste vào PowerShell ISE lưu thành delete-TemporaryFiles.ps1. Nên tuân theo quy tắc đặt tên cmdlet bây giờ bạn hiểu chúng.
Nếu code không chạy vì lý do gì, cũng tải script PowerShell chúng tôi tạo và chạy. Chỉ unzip trước để xem file script.
Khi muốn chạy script, chuột phải chọn Run with PowerShell. Console PowerShell bật 1-2 giây, script chạy, rồi tắt nếu không lỗi.

Học thêm PowerShell ở đâu?
Có vẻ nhiều! Cho script PowerShell đầu tiên là khá nhiều. Nếu đến đây, tự khen mình. Học nhiều hôm nay, nhưng muốn học thêm. Tuyệt vời!
Nhiều tài nguyên Internet học PowerShell. Nơi tốt bắt đầu: bài "Generate a List of Startup Programs via Command Line or PowerShell". Rồi xem thêm:
- Getting Started with Microsoft PowerShell – Microsoft Virtual Academy
- PowerShell Tutorial – TutorialsPoint.com