PowerShell đã thay đổi cách người dùng Windows làm việc với hệ điều hành của mình, biến những tác vụ quản trị phức tạp thành quy trình đơn giản và tự động12. Dù bạn là quản trị viên hệ thống, chuyên gia IT hay người dùng Windows thông thường muốn tăng năng suất, việc thành thạo các lệnh PowerShell thiết yếu có thể tiết kiệm vô số giờ và mở ra khả năng tự động hóa mạnh mẽ34.
Hướng dẫn đầy đủ này bao quát những lệnh PowerShell quan trọng nhất mà mọi người dùng Windows nên thành thạo, từ điều hướng cơ bản đến quản lý hệ thống nâng cao. Kết thúc hướng dẫn, bạn sẽ tự tin tận dụng các tính năng mạnh mẽ của PowerShell cho công việc máy tính hằng ngày.
Mục lục
- PowerShell là gì và vì sao bạn nên quan tâm?
- Bắt đầu: mở PowerShell
- Các lệnh khám phá thiết yếu: la bàn PowerShell của bạn
- Lệnh quản lý tệp và thư mục
- Thông tin hệ thống và quản lý tiến trình
- Lệnh khắc phục sự cố mạng
- Lệnh xử lý nội dung và dữ liệu
- Làm việc với pipeline trong PowerShell
- Quản lý thời gian và ngày tháng
- Thực hành tốt nhất với PowerShell
- Tạo script PowerShell đầu tiên
- Lộ trình học PowerShell nâng cao
- Xử lý các sự cố PowerShell thường gặp
- Kết luận: làm chủ trải nghiệm Windows của bạn
PowerShell là gì và vì sao bạn nên quan tâm?
PowerShell là một shell dòng lệnh và môi trường script mạnh mẽ được cài sẵn trên mọi hệ điều hành Windows hiện đại2. Khác với Command Prompt truyền thống, PowerShell dùng cấu trúc cú pháp động từ - danh từ giúp các lệnh trở nên trực quan và dễ đọc1. Ví dụ, Get-Process lấy danh sách tiến trình đang chạy, còn Stop-Service dừng các dịch vụ hệ thống.
Ưu điểm chính của PowerShell so với Command Prompt
PowerShell có nhiều ưu điểm vượt trội so với giao diện dòng lệnh truyền thống1:
- Đầu ra dạng đối tượng: Thay vì văn bản thuần, PowerShell làm việc với các đối tượng có cấu trúc chứa thuộc tính và phương thức
- Khả năng viết script nâng cao: Tạo script tự động hóa phức tạp với vòng lặp, điều kiện và hàm
- Mở rộng qua module: Thêm chức năng qua thư viện .NET và cmdlet tùy chỉnh
- Hỗ trợ pipeline: Nối các lệnh lại để xử lý dữ liệu hiệu quả
- Tương thích đa nền tảng: Chạy PowerShell trên Windows, Linux và macOS
Bắt đầu: mở PowerShell
Trước khi đi vào các lệnh, bạn cần biết cách mở PowerShell25. Trên Windows 11, cách đơn giản nhất là:
- Gõ “PowerShell” vào thanh tìm kiếm Windows
- Nhấp chuột phải vào “Windows PowerShell”
- Chọn “Run as administrator” để có quyền quản trị nâng cao
Với hầu hết tác vụ quản trị, chạy PowerShell bằng quyền quản trị viên đảm bảo bạn có đủ quyền thực thi các lệnh cấp hệ thống.
Các lệnh khám phá thiết yếu: la bàn PowerShell của bạn
1. Get-Help: sổ tay có sẵn của bạn
Việc Get-Help có lẽ là lệnh PowerShell quan trọng nhất mà bạn từng học467. Nó cung cấp tài liệu đầy đủ cho mọi cmdlet, hàm hoặc khái niệm trong PowerShell.
Cú pháp cơ bản:
powershellGet-Help <cmdlet-name>
Ví dụ thực tế:
powershell# Xem trợ giúp cơ bản cho một lệnh
Get-Help Get-Process
# Xem trợ giúp chi tiết kèm ví dụ
Get-Help Get-Process -Full
# Chỉ xem ví dụ
Get-Help Get-Process -Examples
# Mở tài liệu trợ giúp trực tuyến
Get-Help Get-Process -Online
Mẹo hay: Dùng Update-Help định kỳ để đảm bảo bạn có tài liệu trợ giúp mới nhất6.
2. Get-Command: khám phá các lệnh có sẵn
Khi bạn không biết dùng lệnh nào, Get-Command giúp bạn tìm đúng cmdlet cho công việc của mình486.
Mẫu hữu ích:
powershell# Liệt kê mọi lệnh có sẵn
Get-Command
# Tìm các lệnh bắt đầu bằng "Get"
Get-Command Get-*
# Tìm các lệnh chứa "Process"
Get-Command *Process*
# Tìm lệnh cho hành động cụ thể
Get-Command Start-*
Get-Command Stop-*
Cách này đặc biệt hữu ích khi bạn biết mình muốn làm gì nhưng không chắc tên chính xác của lệnh.
3. Get-Member: hiểu thuộc tính của đối tượng
PowerShell làm việc với đối tượng, và Get-Member cho bạn thấy những thuộc tính và phương thức nào có sẵn cho bất kỳ đối tượng nào6.
powershell# Xem thuộc tính của đối tượng tiến trình
Get-Process | Get-Member
# Xem thuộc tính của đối tượng dịch vụ
Get-Service | Get-Member
Lệnh quản lý tệp và thư mục
4. Get-ChildItem: liệt kê nội dung thư mục
Get-ChildItem là phiên bản tương đương của PowerShell với lệnh dir nhưng có nhiều chức năng hơn hẳn1910.
Cách dùng phổ biến:
powershell# Liệt kê nội dung thư mục hiện tại
Get-ChildItem
# Liệt kê cả tệp ẩn
Get-ChildItem -Force
# Liệt kê đệ quy (gồm cả thư mục con)
Get-ChildItem -Recurse
# Lọc theo loại tệp
Get-ChildItem *.txt
# Tìm tệp trong thư mục con
Get-ChildItem -Path C:\Users -Include *.pdf -Recurse
Bí danh: Bạn cũng có thể dùng ls, dir, hoặc gci làm lối tắt10.
5. Set-Location: di chuyển giữa các thư mục
Di chuyển hiệu quả trong hệ thống tệp với Set-Location10.
powershell# Chuyển đến một thư mục cụ thể
Set-Location C:\Users\Documents
# Về thư mục cha
Set-Location ..
# Quay lại vị trí trước đó
Set-Location -
# Di chuyển bằng bí danh
cd C:\Windows
sl C:\Temp
6. Copy-Item: sao chép tệp và thư mục
Việc Copy-Item cung cấp khả năng sao chép tệp mạnh mẽ910.
powershell# Sao chép một tệp
Copy-Item "source.txt" "destination.txt"
# Sao chép và ghi đè
Copy-Item "source.txt" "backup.txt" -Force
# Sao chép cả thư mục
Copy-Item "C:\Source" "C:\Backup" -Recurse
# Sao chép nhiều tệp bằng ký tự đại diện
Copy-Item "*.log" "C:\Logs\\"
7. Move-Item: di chuyển và đổi tên tệp
Dùng Move-Item cho di chuyển và đổi tên tệp và thư mục1112.
powershell# Chuyển tệp sang vị trí khác
Move-Item "oldfile.txt" "C:\NewLocation\\"
# Đổi tên tệp
Move-Item "oldname.txt" "newname.txt"
# Chuyển mọi tệp thuộc một loại
Get-ChildItem *.txt | Move-Item -Destination "C:\TextFiles\\"
8. Remove-Item: xóa tệp và thư mục
Xóa an toàn tệp và thư mục với Remove-Item10.
powershell# Xóa một tệp
Remove-Item "unwanted.txt"
# Xóa có xác nhận
Remove-Item "important.txt" -Confirm
# Xóa đệ quy cả thư mục
Remove-Item "C:\TempFolder" -Recurse -Force
# Xóa các tệp khớp mẫu
Remove-Item "*.tmp"
Cảnh báo: Hết sức cẩn thận với Remove-Item, nhất là khi dùng -Recurse và -Force vì tệp đã xóa có thể không khôi phục được.
9. New-Item: tạo tệp và thư mục
Tạo nhanh tệp và thư mục mới với New-Item1013.
powershell# Tạo thư mục mới
New-Item -Name "NewFolder" -ItemType Directory
# Tạo tệp mới
New-Item -Name "newfile.txt" -ItemType File
# Tạo tệp có nội dung
New-Item "readme.txt" -ItemType File -Value "This is initial content"
# Tạo các thư mục lồng nhau
New-Item "C:\Projects\NewProject\Source" -ItemType Directory -Force
Thông tin hệ thống và quản lý tiến trình
10. Get-Process: theo dõi tiến trình đang chạy
Get-Process cung cấp thông tin chi tiết về các tiến trình đang chạy trên hệ thống của bạn34.
powershell# Liệt kê mọi tiến trình đang chạy
Get-Process
# Lấy tiến trình cụ thể theo tên
Get-Process notepad
# Lấy tiến trình bằng ký tự đại diện
Get-Process note*
# Sắp xếp tiến trình theo mức dùng CPU
Get-Process | Sort-Object CPU -Descending
# Lấy 10 tiến trình ngốn RAM nhiều nhất
Get-Process | Sort-Object WorkingSet -Descending | Select-Object -First 10
11. Stop-Process: dừng tiến trình
Dừng các tiến trình không phản hồi hoặc không cần thiết với Stop-Process4.
powershell# Dừng tiến trình theo tên
Stop-Process -Name "notepad"
# Dừng tiến trình theo ID
Stop-Process -Id 1234
# Dừng có xác nhận
Stop-Process -Name "chrome" -Confirm
# Buộc dừng tiến trình cứng đầu
Stop-Process -Name "application" -Force
12. Get-Service: quản lý dịch vụ Windows
Theo dõi và quản lý dịch vụ Windows chạy nền41415.
powershell# Liệt kê mọi dịch vụ
Get-Service
# Lấy dịch vụ theo trạng thái
Get-Service | Where-Object Status -eq "Running"
# Lấy một dịch vụ cụ thể
Get-Service -Name "Spooler"
# Lấy các dịch vụ bắt đầu bằng những chữ cái cụ thể
Get-Service -Name "Win*"
13. Start-Service và Stop-Service: điều khiển dịch vụ
Khởi động và dừng dịch vụ Windows khi cần1415.
powershell# Khởi động một dịch vụ
Start-Service -Name "Spooler"
# Dừng một dịch vụ
Stop-Service -Name "Spooler"
# Khởi động lại một dịch vụ
Restart-Service -Name "Spooler"
# Khởi động nhiều dịch vụ
Get-Service -Name "BITS", "Spooler" | Start-Service
Lệnh khắc phục sự cố mạng
14. Test-NetConnection: kiểm tra kết nối mạng
Test-NetConnection là phiên bản nâng cao của ping trong PowerShell với nhiều khả năng hơn1617.
powershell# Kiểm tra kết nối cơ bản
Test-NetConnection google.com
# Kiểm tra một cổng cụ thể
Test-NetConnection google.com -Port 80
# Truy vết tuyến đến đích
Test-NetConnection google.com -TraceRoute
# Kiểm tra nhiều kết nối
"google.com", "microsoft.com" | ForEach-Object { Test-NetConnection $_ }
15. Get-NetIPAddress: xem cấu hình IP
Kiểm tra cấu hình IP mạng với Get-NetIPAddress1617.
powershell# Hiển thị mọi địa chỉ IP
Get-NetIPAddress
# Chỉ hiển thị địa chỉ IPv4
Get-NetIPAddress -AddressFamily IPv4
# Lấy thông tin của một card mạng cụ thể
Get-NetIPAddress -InterfaceAlias "Ethernet"
16. Resolve-DnsName: kiểm tra phân giải DNS
Kiểm tra phân giải DNS và tra cứu thông tin tên miền16.
powershell# Tra cứu DNS cơ bản
Resolve-DnsName google.com
# Tra cứu loại bản ghi cụ thể
Resolve-DnsName google.com -Type MX
# Dùng máy chủ DNS cụ thể
Resolve-DnsName google.com -Server 8.8.8.8
Lệnh xử lý nội dung và dữ liệu
17. Get-Content: đọc nội dung tệp
Đọc và hiển thị nội dung tệp trực tiếp trong PowerShell1819.
powershell# Hiển thị toàn bộ nội dung tệp
Get-Content "logfile.txt"
# Đọc số dòng cụ thể
Get-Content "bigfile.txt" -Head 10
# Theo dõi thay đổi của tệp (giống tail -f)
Get-Content "live.log" -Wait
# Đọc vài dòng cuối
Get-Content "recent.log" -Tail 20
18. Out-File: xuất kết quả ra tệp
Lưu kết quả lệnh ra tệp để phân tích sau619.
powershell# Lưu danh sách tiến trình ra tệp
Get-Process | Out-File "processes.txt"
# Ghi tiếp vào tệp có sẵn
Get-Date | Out-File "log.txt" -Append
# Lưu với bảng mã cụ thể
Get-Service | Out-File "services.txt" -Encoding UTF8
19. Select-Object: lọc và định dạng kết quả
Kiểm soát thông tin nào được hiển thị từ kết quả lệnh2021.
powershell# Chỉ hiển thị các thuộc tính cụ thể
Get-Process | Select-Object Name, CPU, WorkingSet
# Lấy vài kết quả đầu tiên
Get-ChildItem | Select-Object -First 5
# Chọn các giá trị duy nhất
Get-Process | Select-Object ProcessName -Unique
Làm việc với pipeline trong PowerShell
20. Where-Object: lọc kết quả
Lọc kết quả lệnh theo tiêu chí cụ thể2021.
powershell# Lọc các dịch vụ đang chạy
Get-Service | Where-Object Status -eq "Running"
# Lọc các tệp lớn
Get-ChildItem | Where-Object Length -gt 1MB
# Lọc phức tạp với nhiều điều kiện
Get-Process | Where-Object {$_.CPU -gt 100 -and $_.WorkingSet -gt 50MB}
21. Sort-Object: sắp xếp kết quả
Sắp xếp kết quả đầu ra theo thứ tự tăng dần hoặc giảm dần21.
powershell# Sắp xếp tiến trình theo tên
Get-Process | Sort-Object Name
# Sắp xếp theo nhiều thuộc tính
Get-ChildItem | Sort-Object LastWriteTime, Name
# Sắp xếp theo thứ tự giảm dần
Get-Process | Sort-Object CPU -Descending
22. ForEach-Object: xử lý từng mục
Thực hiện hành động trên từng đối tượng trong pipeline1921.
powershell# Process each file
Get-ChildItem *.txt | ForEach-Object {
Write-Host "Processing: $($_.Name)"
}
# Modify each object
Get-Service | ForEach-Object {
"$($_.Name): $($_.Status)"
}
Quản lý thời gian và ngày tháng
23. Get-Date: làm việc với ngày và giờ
Lấy và định dạng thông tin ngày giờ hiện tại19.
powershell# Lấy ngày giờ hiện tại
Get-Date
# Định dạng ngày theo kiểu cụ thể
Get-Date -Format "yyyy-MM-dd HH:mm:ss"
# Lấy các thành phần của ngày
(Get-Date).DayOfWeek
(Get-Date).Year
# Tính ngày trong tương lai
(Get-Date).AddDays(30)
Thực hành tốt nhất với PowerShell
Dùng phím Tab để tự hoàn thành
của PowerShell tính năng tự hoàn thành bằng Tab giúp nhập lệnh nhanh hơn hẳn17. Nhấn Tab sau khi gõ một phần tên lệnh, tham số hoặc đường dẫn tệp để tự động hoàn thành.
Tận dụng bí danh
PowerShell có nhiều bí danh tích hợp cho các lệnh thông dụng5:
lshoặcdirchoGet-ChildItemcdchoSet-LocationcathoặctypechoGet-ContentrmhoặcdelchoRemove-Item
Kiểm thử lệnh an toàn
Trước khi chạy những lệnh có thể gây hư hại, hãy dùng tham số -WhatIf để xem điều gì sẽ xảy ra mà không thực sự chạy lệnh12:
powershellRemove-Item *.txt -WhatIf
Stop-Service Spooler -WhatIf
Đặt chính sách thực thi
Vì lý do bảo mật, PowerShell hạn chế chạy script theo mặc định22. Để chạy script, bạn có thể cần sửa chính sách thực thi:
powershell# Kiểm tra chính sách hiện tại
Get-ExecutionPolicy
# Đặt chính sách cho người dùng hiện tại
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
Tạo script PowerShell đầu tiên
Khi đã quen với từng lệnh riêng lẻ, bạn có thể kết hợp chúng thành script để tự động hóa2223. Đây là một ví dụ đơn giản:
powershell# Lưu thành system-info.ps1
Write-Host "System Information Report" -ForegroundColor Green
Write-Host "=========================" -ForegroundColor Green
Write-Host "`nCurrent Date and Time:" -ForegroundColor Yellow
Get-Date
Write-Host "`nTop 5 Processes by CPU:" -ForegroundColor Yellow
Get-Process | Sort-Object CPU -Descending | Select-Object -First 5
Write-Host "`nRunning Services Count:" -ForegroundColor Yellow
(Get-Service | Where-Object Status -eq "Running").Count
Write-Host "`nDisk Usage:" -ForegroundColor Yellow
Get-WmiObject -Class Win32_LogicalDisk | Select-Object DeviceID, @{Name="Size(GB)";Expression={[math]::Round($_.Size/1GB,2)}}, @{Name="FreeSpace(GB)";Expression={[math]::Round($_.FreeSpace/1GB,2)}}
Lộ trình học PowerShell nâng cao
Khi đã thành thạo những lệnh thiết yếu này, hãy cân nhắc khám phá các chủ đề nâng cao sau24:
- Quản lý Active Directory với cmdlet AD
- Quản trị máy tính từ xa bằng PowerShell remoting
- Lập lịch tác vụ tự động bằng script PowerShell
- Xử lý lỗi và ghi log trong script
- Module và hàm PowerShell để tái sử dụng mã
Xử lý các sự cố PowerShell thường gặp
Lỗi Execution Policy
Nếu bạn gặp lỗi “execution of scripts is disabled”, hãy kiểm tra và sửa execution policy của bạn22:
powershellGet-ExecutionPolicy -List
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
Lỗi từ chối quyền truy cập
Nhiều tác vụ quản trị cần quyền nâng cao. Luôn chạy PowerShell với tư cách quản trị viên khi làm việc với:
- Dịch vụ hệ thống
- Thay đổi Registry
- Cấu hình mạng
- Quản lý tài khoản người dùng
Vấn đề về đường dẫn và vị trí
Khi lệnh không tìm thấy tệp hay thư mục, hãy kiểm tra vị trí hiện tại và dùng đường dẫn đầy đủ:
powershellGet-Location
Set-Location C:\YourDesiredPath
Kết luận: làm chủ trải nghiệm Windows của bạn
Thành thạo những lệnh PowerShell thiết yếu sẽ biến bạn từ một người dùng Windows thụ động thành một quản trị viên hệ thống chủ động, có khả năng tự động hóa các tác vụ phức tạp và giải quyết vấn đề hiệu quả13. lệnh động từ - danh từ giúp PowerShell dễ tiếp cận khi học, trong khi khả năng pipeline mạnh mẽ của nó cho phép xử lý dữ liệu và quản lý hệ thống tinh vi24.
Hãy bắt đầu bằng việc luyện những lệnh này trong một môi trường an toàn, dần dần xây dựng sự tự tin và khám phá các tình huống nâng cao hơn. Hãy nhớ rằng Get-Help luôn sẵn sàng cung cấp thông tin chi tiết về bất kỳ lệnh nào, và tính năng tự động hoàn thành bằng phím Tab giúp nhập lệnh nhanh và chính xác hơn725.
Dù bạn đang quản lý tệp, theo dõi hiệu năng hệ thống, xử lý sự cố mạng hay tự động hóa các tác vụ lặp lại, PowerShell cung cấp những công cụ bạn cần để làm việc hiệu quả hơn với hệ thống Windows17. Việc đầu tư học PowerShell đem lại lợi ích qua năng suất tăng và khả năng quản trị hệ thống được nâng cao, những điều sẽ theo bạn suốt quá trình làm việc với máy tính.
