PS
PowerShell In-Depth
Làm Quiz
Từ Vạch Xuất Phát Tới Chuyên Gia IT Automation

Làm Chủ PowerShell Chuyên Sâu Cho Quản Trị Hệ Thống

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.

50+
Lệnh Chuyên Sâu
Objects
Pipeline Hướng Đối Tượng
CIM/WMI
Quản Trị Tên Miền & OS
WinRM
Kết Nối Từ Xa Remoting
CẤP ĐỘ 1

Kiến Thức Nền Tảng & Cú Pháp Cơ Bản

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.

01 / PIPELINE Đường Ống Dữ Liệu

Truyền Đối Tượng Qua Đường Ống

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.

Get-Process | Where-Object WorkingSet -gt 50MB
02 / VERB-NOUN Cú Pháp Chuẩn

Quy Tắc Động Từ - Danh Từ

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.

Get-Command -Verb Get # Liệt kê lệnh lấy dữ liệu
03 / VARIABLES Biến & Môi Trường

Biến và Ổ Đĩa Ảo ($env:)

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:.

$env:PATH = "C:\Tools;" + $env:PATH
04 / FILTERING Lọc Dữ Liệu Sớm

Lọc Sớm với tham số -Filter

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 độ.

Get-CimInstance -ClassName Win32_Service -Filter "State='Running'"
05 / FORMATTING Hiển Thị Kết Quả

Format-List vs Format-Table

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.

Get-Service wuauserv | Format-List *
06 / HELP SYSTEM Tra Cứu Tại Chỗ

Trợ Giúp Trực Tuyến Get-Help

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.

Get-Help Get-Process -Examples

Mẹo Ghi Nhớ (Memory Tip)

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!

💡 Nhấn phím [Tab] để tự động hoàn tất tên lệnh (Tab Completion).

So sánh: Bash / CMD vs. PowerShell

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
CẤP ĐỘ 2 - TƯƠNG TÁC

Trình Khám Phá Lệnh & Mô Phỏng Pipeline

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ả.

PowerShell 7.4.0 Engine
Get-Service Pipeline
Mô hình dòng chảy Pipeline:
Get-Service
Lấy danh sách đối tượng
Where-Object
Lọc theo điều kiện
Select-Object
Chọn thuộc tính hiển thị
Get-Service | Where-Object Status -eq 'Running' | Select-Object Name, Status, DisplayName
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
                        
CẤP ĐỘ 3 - QUẢN TRỊ

Quản Trị Hệ Thống Chuyên Sâu (50 Lệnh Cốt Lõi)

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.

01 / SERVICES

Quản Lý Dịch Vụ Hệ Thống

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 - Liệt kê dịch vụ
  • Start-Service - Khởi động dịch vụ
  • Restart-Service - Khởi động lại
  • Set-Service - Đổi chế độ Startup
Ví dụ: Get-Service wuauserv | Restart-Service -Force
02 / TASKS

Tác Vụ Định Kỳ (Scheduled Tasks)

Tự độ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 - Xem danh sách task
  • Register-ScheduledTask - Tạo task mới
  • Start-ScheduledTask - Chạy thủ công
  • Unregister-ScheduledTask - Xóa task
Ví dụ: Get-ScheduledTask -TaskName "Backup*"
03 / PROCESSES

Tiến Trình & Hiệu Năng Hệ Thống

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.

  • Get-Process - Liệt kê tiến trình
  • Stop-Process - Tắt tiến trình (-Id / -Name)
  • Get-Counter - Lấy Performance Counters
  • Wait-Process - Chờ tiến trình kết thúc
Ví dụ: Stop-Process -Name "notepad" -Force
04 / CIM & WMI

Truy Vấn Phần Cầm CIM / WMI

CIM (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 - Lấy thông tin CIM
  • Get-CimClass - Xem các class có sẵn
  • Invoke-CimMethod - Gọi phương thức CIM
  • Get-WmiObject - Lệnh WMI cũ (legacy)
Ví dụ: Get-CimInstance Win32_OperatingSystem
05 / REMOTING

Quản Trị Từ Xa (Remoting)

Kế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).

  • Enter-PSSession - Phiên làm việc tương tác
  • Invoke-Command - Chạy lệnh từ xa
  • Enable-PSRemoting - Bật tính năng remoting
  • New-PSSession - Tạo kết nối bền vững
Ví dụ: Invoke-Command -ComputerName Srv01 -ScriptBlock {Get-Date}
06 / LOGS & FILES

Sự Kiện Hệ Thống & Tệp Tin

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 - Đọc Event Log nâng cao
  • Get-ChildItem - Liệt kê file/thư mục (ls/dir)
  • Get-Content - Đọc nội dung file (cat)
  • Set-Content / Out-File - Ghi file
Ví dụ: Get-WinEvent -LogName System -MaxEvents 10
CẤP ĐỘ 4 - CHUYÊN GIA

Lập Trình Nâng Cao & Tự Động Hóa Doanh Nghiệp

Khi đư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).

Advanced Functions & CmdletBinding

Function Chuẩn

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ẽ.

function Get-SystemHealth { [CmdletBinding()] param( [Parameter(Mandatory=$true)] [string]$ComputerName ) try { Write-Verbose "Đang kết nối tới $ComputerName..." Get-CimInstance -ComputerName $ComputerName -ClassName Win32_OperatingSystem } catch { Write-Error "Lỗi kết nối: $_" } }

Bắt Lỗi Mạnh Mẽ (Try / Catch / Finally)

Error Action

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.

try { # Ép lỗi non-terminate thành terminate Get-Item "C:\ProtectedFolder\secret.txt" -ErrorAction Stop } catch [System.Management.Automation.ItemNotFoundException] { Write-Warning "Không tìm thấy tệp tin bảo mật!" } finally { Write-Host "Hoàn tất kiểm tra bảo mật." -ForegroundColor Green }

Background Jobs & ForEach-Object -Parallel

Hiệu năng cao

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+.

$servers = @("Srv01", "Srv02", "Srv03", "Srv04") # Chạy song song tối đa 4 luồng $servers | ForEach-Object -Parallel { Test-Connection -ComputerName $_ -Count 1 -Quiet } -ThrottleLimit 4

Tạo Đối Tượng Tùy Chỉnh (PSCustomObject)

Báo cáo chuẩn

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.

$report = [PSCustomObject]@{ ComputerName = $env:COMPUTERNAME User = $env:USERNAME DiskFreeGB = (Get-PSDrive C).Free / 1GB -as [int] CheckTime = Get-Date } $report | Export-Csv -Path "C:\Reports\health.csv" -NoTypeInformation
TỪ VỰNG CHUYÊN NGÀNH

16 Thuật Ngữ PowerShell Doanh Nghiệp

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.
MINI GAME KIỂM TRA

Thử Thách Kiến Thức PowerShell (10 Câu Hỏi)

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!

Câu hỏi: 1 / 10
Điểm: 0
Streak: 0 🔥

Đang tải câu hỏi...