Nền tảng tự học toàn diện gồm 50 lệnh cốt lõi, cơ chế Pipeline hướng đối tượng, Quản trị Dịch vụ & Scheduled Tasks, Remoting và Kỹ thuật Scripting chuẩn Enterprise.
PowerShell không phải là Bash hay Command Prompt truyền thống. Nó là một môi trường shell tự động hóa mạnh mẽ xây dựng trên nền tảng .NET CLR, xử lý dữ liệu dưới dạng Đối tượng (Objects) thay vì văn bản thô thuần túy.
Dấu gạch đứng (|) trong PowerShell truyền toàn bộ đối tượng .NET (thuộc tính & phương thức) chứ không phải chuỗi ký tự sang lệnh kế tiếp.
Mọi Cmdlet chuẩn đều tuân theo định dạng Verb-Noun (ví dụ: Get-Service, Stop-Process). Dễ đọc, dễ đoán.
Biến luôn bắt đầu bằng dấu $. Biến môi trường hệ thống được quản lý thống nhất qua ổ đĩa ảo Env:.
Thay vì lấy toàn bộ danh sách rồi lọc bằng Where-Object, hãy dùng tham số -Filter ngay trong lệnh lấy dữ liệu để tối ưu tốc độ.
Sử dụng fl để xem chi tiết mọi thuộc tính của đối tượng theo chiều dọc, hoặc ft để trình bày dạng bảng ngắn gọn.
Không cần tra Google cho cú pháp. Lệnh Get-Help cung cấp tài liệu chi tiết và ví dụ thực tế ngay trong console.
Hãy nhớ công thức "DO - WHAT - OBJECT" tương ứng với Verb-Noun.
Ví dụ: Bạn muốn lấy danh sách tiến trình? Động từ là Get, danh từ là Process -> Get-Process. Bạn muốn dừng dịch vụ? Stop-Service!
| Tính năng / Thao tác | Linux Bash / Windows CMD | PowerShell (.NET Object) |
|---|---|---|
| Định dạng truyền dữ liệu | Văn bản thuần túy (Plain text string) | Đối tượng .NET (.NET Objects có thuộc tính) |
| Xem tiến trình hệ thống | ps aux / tasklist |
Get-Process |
| Lọc dữ liệu theo điều kiện | grep / findstr (cồng kềnh) |
Where-Object { $_.CPU -gt 10 } |
| Đọc file JSON / XML | Dùng jq, sed, awk (phức tạp) | Get-Content file.json | ConvertFrom-Json |
Chọn một kịch bản quản trị hệ thống phổ biến bên dưới để xem cách PowerShell lấy dữ liệu, lọc qua đường ống (Pipeline), định dạng (Format) và xuất ra đối tượng kết quả.
Status Name DisplayName
------ ---- -----------
Running W3SVC World Wide Web Publishing Service
Running WinDefend Windows Defender Antivirus Service
Running WSearch Windows Search
Running WaaSMedicSvc Windows Update Medic Service
Là một kỹ sư IT chuyên nghiệp, bạn cần thành thạo việc quản lý các thành phần cốt lõi của Windows Server và client trực tiếp qua PowerShell mà không cần mở giao diện GUI.
Kiểm soát trạng thái khởi động, dừng, khởi động lại và cấu hình StartMode của các Windows Service.
Get-Service wuauserv | Restart-Service -ForceTự động hóa các công việc bảo trì hệ thống bằng cách tạo, cấu hình và kích hoạt các Windows Scheduled Tasks.
Get-ScheduledTask -TaskName "Backup*"Giám sát mức tiêu thụ CPU, RAM và tắt các tiến trình gây treo máy hoặc chiếm tài nguyên quá mức.
Stop-Process -Name "notepad" -ForceCIM (Common Information Model) là chuẩn hiện đại thay thế WMI cũ để truy vấn sâu phần cứng, BIOS, đĩa cứng và OS.
Get-CimInstance Win32_OperatingSystemKết nối và thực thi lệnh PowerShell trên hàng trăm máy chủ từ xa bảo mật thông qua giao thức WinRM (WS-Management).
Invoke-Command -ComputerName Srv01 -ScriptBlock {Get-Date}Phân tích Windows Event Log tìm lỗi ứng dụng (Error/Warning) và thao tác hàng loạt trên file/thư mục.
Get-WinEvent -LogName System -MaxEvents 10Khi đưa PowerShell vào môi trường Production, bạn cần áp dụng các kỹ thuật viết script chuẩn công nghiệp như bắt lỗi Try/Catch, xây dựng Advanced Function với CmdletBinding, và xử lý bất đồng bộ (Jobs).
Biến hàm script thông thường thành một cmdlet chuyên nghiệp hỗ trợ sẵn các tham số chuẩn như -Verbose, -Confirm, và kiểm tra kiểu dữ liệu chặt chẽ.
Kiểm soát lỗi terminate/non-terminate bằng -ErrorAction Stop kết hợp cấu trúc Try/Catch để đảm bảo script không bị crash ngầm giữa chừng khi chạy tự động.
Tăng tốc độ xử lý hàng loạt máy chủ bằng cách chạy song song các luồng độc lập với tham số -Parallel trong PowerShell 7+.
Thay vì xuất chuỗi văn bản lộn xộn, hãy đóng gói kết quả quét hệ thống thành các đối tượng PSCustomObject để dễ dàng xuất ra CSV, HTML hoặc JSON báo cáo.
Bảng tra cứu các thuật ngữ tiếng Anh cốt lõi đi kèm ý nghĩa tiếng Việt và câu ví dụ thực tế giúp bạn tự tin đọc tài liệu kỹ thuật Microsoft Learn.
| English Term | Tiếng Việt | Ví dụ Thực Tế (Example Sentence) |
|---|---|---|
| Cmdlet | Lệnh PowerShell (Command-let) | Get-Service is a core cmdlet used to manage Windows services. |
| Pipeline | Đường ống truyền dữ liệu | Data flows through the pipeline as .NET objects. |
| PSCustomObject | Đối tượng tùy chỉnh PowerShell | We use PSCustomObject to structure custom audit reports. |
| WinRM | Windows Remote Management | Ensure WinRM service is running before executing remote commands. |
| CIM Instance | Thực thể mô hình thông tin chung | Get-CimInstance queries hardware inventory efficiently. |
| Scheduled Task | Tác vụ định kỳ hệ thống | Register-ScheduledTask automates nightly database backups. |
| ScriptBlock | Khối lệnh thực thi | Invoke-Command accepts a scriptblock parameter to run remotely. |
| Execution Policy | Chính sách thực thi script | Set-ExecutionPolicy RemoteSigned allows local scripts to execute. |
| Module | Gói mở rộng lệnh | Import-Module ActiveDirectory loads AD management cmdlets. |
| Pipeline Variable | Biến đường ống | The $_ or $PSItem represents the current object in the pipeline. |
| ThrottleLimit | Giới hạn luồng song song | ThrottleLimit controls how many concurrent jobs run at once. |
| Event Log | Nhật ký sự kiện hệ thống | Get-WinEvent helps troubleshoot critical application crashes. |
| Error Action | Hành vi xử lý lỗi | Using -ErrorAction Stop converts non-terminating errors into terminating ones. |
| Tab Completion | Tự động hoàn tất bằng phím Tab | Tab completion speeds up typing long cmdlet names. |
| PSRemoting | Tính năng điều khiển từ xa | PSRemoting is enabled by default in modern Windows Server. |
| Background Job | Tiến trình nền | Start-Job runs lengthy scripts asynchronously in the background. |
Kiểm tra độ hiểu biết từ cơ bản đến chuyên gia. Điểm cao nhất được lưu tự động!
Bạn đã hoàn thành 10 câu hỏi trắc nghiệm PowerShell chuyên sâu.