Các câu lệnh trong PowerShell là công cụ mạnh mẽ giúp tự động hóa tác vụ, quản lý tệp, thư mục, tiến trình và dịch vụ một cách hiệu quả. Nếu bạn đang tìm kiếm danh sách lệnh PowerShell từ cơ bản đến nâng cao để tối ưu công việc, bài viết này sẽ cung cấp hướng dẫn chi tiết kèm ví dụ thực tế. Hãy cùng ITviec khám phá các lệnh trong PowerShell quan trọng và phổ biến nhất giúp bạn làm chủ hệ thống Windows một cách dễ dàng.

Đọc bài viết để biết thêm về:

  • Powershell là gì?
  • So sánh Powershell và CMD
  • Phân loại các câu lệnh Powershell
  • Mẹo sử dụng Powershell hiệu quả hơn

Tổng quan về Powershell

Powershell là gì?

PowerShell là một công cụ của Microsoft hỗ trợ lập trình cho các tác vụ tự động hóa, quản lý cấu hình và viết script. Đây là một giao diện dòng lệnh mã nguồn mở, có thể chạy trên Windows, macOS và Linux. PowerShell giúp lập trình viên tiết kiệm thời gian bằng cách đơn giản hóa các công việc lặp đi lặp lại và lưu trữ lệnh để sử dụng lại sau này.

Đọc thêm: PowerShell là gì chi tiết: Tính năng, Cài đặt, Mẹo sử dụng nên biết

Ưu và nhược điểm của Powershell

Ưu điểm Nhược điểm
Tự động hóa mạnh mẽ: Hỗ trợ quản trị hệ thống, triển khai phần mềm, và quản lý máy chủ một cách hiệu quả. Đường cong học tập cao: Cú pháp phức tạp hơn so với CMD hoặc Bash, khó tiếp cận với người mới.
Tương thích đa nền tảng: Hỗ trợ Windows, macOS, và Linux, giúp quản lý hệ thống linh hoạt hơn. Hiệu suất có thể thấp hơn CMD: Một số lệnh đơn giản chạy chậm hơn CMD do PowerShell dựa trên .NET.
Tích hợp tốt với hệ sinh thái Microsoft: Quản lý Active Directory, Azure, Office 365, Exchange dễ dàng. Không phổ biến trên Linux và macOS: Mặc dù hỗ trợ, nhưng Bash vẫn là lựa chọn chính trên hệ điều hành này.
Khả năng mở rộng cao: Hỗ trợ script, module, và có thể mở rộng với .NET Framework. Yêu cầu quyền Administrator cho nhiều lệnh: Một số lệnh quan trọng cần chạy với quyền quản trị viên.
Hỗ trợ pipeline mạnh mẽ: Có thể kết hợp nhiều lệnh để xử lý dữ liệu trực tiếp mà không cần tạo file trung gian. Không thân thiện với người dùng không chuyên: Chủ yếu dành cho quản trị viên hệ thống và lập trình viên.
Mã nguồn mở và cập nhật thường xuyên: Được Microsoft phát triển và cải tiến liên tục. Hạn chế trong việc tương tác với GUI: Tập trung vào dòng lệnh, không mạnh về thao tác giao diện đồ họa.

So sánh Powershell và CMD

Tiêu chí Powershell CMD (Command Prompt)
Mục đích sử dụng Dành cho quản trị viên hệ thống, DevOps, lập trình viên, hỗ trợ tự động hóa mạnh mẽ. Chủ yếu dành cho người dùng phổ thông thực hiện các lệnh hệ thống cơ bản.
Cú pháp lệnh Sử dụng cú pháp Động từ-Danh từ (Verb-Noun cmdlets) và hỗ trợ lập trình với .NET Framework. Sử dụng cú pháp đơn giản dựa trên các lệnh DOS.
Khả năng tự động hoá Mạnh mẽ, hỗ trợ script nâng cao, vòng lặp, điều kiện. Hạn chế, chỉ hỗ trợ batch script (.bat, .cmd) đơn giản.
Tương thích hệ điều hành Đa nền tảng: Windows, macOS, Linux. Chỉ chạy trên Windows.
Hỗ trợ pipeline Cho phép truyền dữ liệu giữa các lệnh và xử lý linh hoạt. Hạn chế, chỉ hoạt động với một số lệnh nhất định.
Khả năng mở rộng Hỗ trợ module, cmdlet và tích hợp với Azure, Active Directory, SQL Server. Không thể mở rộng, chỉ dùng các lệnh có sẵn.
Hiệu suất Có thể chậm hơn CMD trong một số tác vụ đơn giản do dựa trên .NET Framework. Nhanh hơn khi thực hiện các lệnh hệ thống cơ bản như copy, move, del.
Khả năng tương tác Có thể chạy lệnh CMD bằng cmd.exe. Không thể chạy trực tiếp lệnh PowerShell.

PowerShell là công cụ mạnh mẽ dành cho System Administrators, DevOps Engineers và Developers, cung cấp khả năng tự động hóa, quản lý cấu hình và xử lý dữ liệu linh hoạt nhờ hỗ trợ cmdlet, scripting và pipeline. Trong khi đó, CMD phù hợp hơn với người dùng phổ thông, giúp thực hiện nhanh chóng các lệnh hệ thống cơ bản trên Windows. Nếu bạn cần một công cụ đơn giản để quản lý tệp hoặc thư mục, CMD là lựa chọn đủ dùng. Tuy nhiên, nếu muốn tự động hóa tác vụ phức tạp và tích hợp sâu với hệ thống, PowerShell sẽ là giải pháp tối ưu hơn.

Các lệnh trong Powershell quan trọng và phổ biến cần nhớ

Các lệnh PowerShell, hay cmdlet, tuân theo cú pháp động từ – danh từ, trong đó động từ chỉ hành động và danh từ là đối tượng. Nắm vững cú pháp này sẽ giúp bạn sử dụng PowerShell hiệu quả hơn.

Nhóm các lệnh trong Powershell để trợ giúp

Get-Help

Cung cấp thông tin chi tiết về một cmdlet cụ thể, giúp bạn hiểu cách sử dụng lệnh.

Ví dụ: Get-Help Get-Process hiển thị hướng dẫn sử dụng cmdlet Get-Process.

Get-Command

Liệt kê tất cả các lệnh có sẵn trong PowerShell.

Ví dụ: Get-Command -Noun Process hiển thị các lệnh có chứa danh từ “Process”.

Get-Alias

Hiển thị danh sách bí danh của các cmdlet PowerShell, giúp người dùng dễ dàng nhận diện các lệnh viết tắt.

Ví dụ: Get-Alias -Name ls kiểm tra xem ls là bí danh của cmdlet nào trong PowerShell (thường là Get-ChildItem).

Nhóm các lệnh trong Powershell để thông tin & quản trị

Get-Process

Hiển thị danh sách tiến trình đang chạy trên hệ thống.

Ví dụ: Get-Process -Name “notepad” giúp kiểm tra xem Notepad có đang hoạt động hay không.

Stop-Process

Dừng một tiến trình đang chạy bằng cách sử dụng tên hoặc ID.

Ví dụ: Stop-Process -Name “notepad” -Force sẽ buộc đóng tất cả cửa sổ Notepad đang mở.

Get-Service

Kiểm tra trạng thái của một dịch vụ.

Ví dụ: Get-Service -Name “wuauserv” sẽ hiển thị trạng thái của dịch vụ Windows Update.

Start-Service

Khởi động một dịch vụ.

Ví dụ: Chạy Start-Service -Name “wuauserv” sẽ kích hoạt dịch vụ Windows Update nếu nó đang bị tắt.

Stop-Service

Dừng một dịch vụ đang chạy.

Ví dụ: Stop-Service -Name “wuauserv” sẽ tắt Windows Update.

Nhóm các lệnh trong Powershell để quản lý tập tin & thư mục

Get-Item

Lấy thông tin chi tiết về một tệp hoặc thư mục.

Ví dụ: Get-Item “C:\Windows\System32\notepad.exe” sẽ hiển thị thông tin về tệp Notepad.

Get-ChildItem

Liệt kê tất cả tệp và thư mục con trong một thư mục.

Ví dụ: Get-ChildItem “C:\Users” sẽ hiển thị danh sách tệp trong thư mục Users.

New-Item

Hỗ trợ tạo tệp hoặc thư mục mới trong hệ thống.

Ví dụ: Nếu bạn muốn tạo một tệp nhật ký, lệnh New-Item -Path “C:\Scripts\log.txt” -ItemType File sẽ tạo tệp log.txt trong thư mục C:\Scripts.

Copy-Item

Sao chép tệp hoặc thư mục từ vị trí này sang vị trí khác.

Ví dụ: Copy-Item -Path “C:\Data\report.xlsx” -Destination “D:\Backup\” sẽ sao chép tệp report.xlsx từ thư mục C:\Data sang D:\Backup.

Move-Item

Hỗ trợ di chuyển hoặc đổi tên tệp/thư mục.

Ví dụ: Move-Item -Path “C:\Data\old_report.xlsx” -Destination “C:\Data\new_report.xlsx” sẽ đổi tên tệp old_report.xlsx thành new_report.xlsx.

Remove-Item

Xóa tệp hoặc thư mục một cách nhanh chóng.

Ví dụ: Khi sử dụng Remove-Item -Path “C:\Scripts\log.txt” -Force, tệp log.txt sẽ bị xóa mà không cần xác nhận, giúp tiết kiệm thời gian khi quản lý hệ thống.

Nhóm các lệnh trong Powershell để quản trị hệ thống

Invoke-Command

Thực thi lệnh trên một hoặc nhiều máy tính từ xa, giúp quản trị viên dễ dàng kiểm tra và quản lý hệ thống mà không cần truy cập trực tiếp.

Ví dụ: Invoke-Command -ComputerName Server01 -ScriptBlock { Get-Service } sẽ chạy lệnh Get-Service trên máy chủ Server01 và trả về danh sách dịch vụ đang chạy.

Set-ExecutionPolicy

Cấu hình quyền thực thi script PowerShell. (Chỉ áp dụng trên Windows, không có trên macOS và Linux).

Ví dụ: Set-ExecutionPolicy RemoteSigned cho phép chạy script được ký số từ xa.

Nhóm các lệnh trong Powershell để quản lý dữ liệu

Export-CSV

Xuất dữ liệu ra tệp CSV để xử lý hoặc phân tích sau này.

Ví dụ: Khi bạn chạy Get-Process | Export-CSV -Path “C:\Data\processes.csv” -NoTypeInformation, danh sách tiến trình đang chạy sẽ được lưu vào tệp processes.csv.

Import-CSV

Nhập dữ liệu từ tệp CSV vào PowerShell để xử lý.

Ví dụ: Import-CSV -Path “C:\Data\users.csv” sẽ đọc dữ liệu từ users.csv và hiển thị nội dung dưới dạng đối tượng PowerShell.

Nhóm các lệnh trong Powershell liên quan mạng

Test-Connection

Câu lệnh này hoạt động giống như lệnh ping, giúp kiểm tra kết nối mạng giữa máy tính của bạn và máy chủ từ xa.

Ví dụ: Test-Connection -ComputerName google.com -Count 4 sẽ gửi 4 gói tin đến google.com để kiểm tra độ phản hồi mạng.

Test-NetConnection

Kiểm tra kết nối mạng, bao gồm cả kiểm tra cổng và truy vấn TCP/IP.

Ví dụ: Test-NetConnection -ComputerName google.com -Port 443 Lệnh này kiểm tra kết nối TCP đến google.com trên cổng 443 (HTTPS), giúp xác định xem cổng có mở hay không.

Get-NetAdapter

Hiển thị danh sách các card mạng trên hệ thống, giúp kiểm tra trạng thái và thông tin của card mạng.

Ví dụ: Lệnh Get-NetAdapter liệt kê tất cả các adapter mạng, hiển thị trạng thái (Up hoặc Down) và thông tin chi tiết.

Nhóm các lệnh trong Powershell để kiểm tra nhật ký sự kiện

Get-EventLog

Kiểm tra nhật ký hệ thống, giúp chẩn đoán lỗi nhanh chóng. 

Lệnh Get-EventLog -LogName System -Newest 10 sẽ hiển thị 10 sự kiện hệ thống mới nhất, giúp bạn theo dõi hoạt động của hệ thống.

Get-WinEvent

Câu lệnh này là phiên bản nâng cao của Get-EventLog, hỗ trợ truy xuất nhật ký sự kiện theo nhiều bộ lọc khác nhau.

Lệnh Get-WinEvent -LogName Security -MaxEvents 10 lấy 10 sự kiện bảo mật (Security) gần nhất, giúp theo dõi các sự kiện đăng nhập, quyền truy cập hệ thống,…

*Lưu ý: Các cmdlet PowerShell có chứa ‘EventLog’ chỉ hoạt động với các nhật ký sự kiện kiểu cũ của Windows như Application, System hoặc Security. Nếu bạn cần truy xuất nhật ký sự kiện trên Windows Vista trở lên (sử dụng công nghệ Windows Event Log mới hơn), hãy dùng Get-WinEvent thay vì Get-EventLog.

Nhóm các lệnh trong Powershell để quản lý tiến trình nền

Start-Job

Chạy một lệnh trong nền mà không làm gián đoạn quá trình làm việc hiện tại.

Ví dụ: Khi chạy Start-Job -ScriptBlock { Get-Process }, PowerShell sẽ thực thi Get-Process trong nền, giúp bạn tiếp tục làm việc mà không cần đợi lệnh hoàn thành.

Get-Job

Hiển thị danh sách các tiến trình nền đang chạy và trạng thái của chúng.

Lệnh Get-Job liệt kê tất cả các công việc nền đang chạy, bao gồm ID, trạng thái (Running, Completed, Failed).

Receive-Job

Lấy kết quả từ một tiến trình nền đã hoàn thành.

Ví dụ: Receive-Job -Id 1 lấy kết quả từ tiến trình nền có ID 1. Điều này giúp truy xuất kết quả sau khi tiến trình đã chạy xong.

Tóm tắt tính năng chính của nhóm các lệnh trong Powershell

Nhóm Câu lệnh Mô tả ngắn gọn
Nhóm câu lệnh trợ giúp Get-Help, Get-Command, Get-Alias Hỗ trợ tìm kiếm và hiển thị thông tin về cmdlet.
Nhóm câu lệnh thông tin & quản trị Get-Process, Stop-Process, Get-Service, Start-Service Quản lý tiến trình và dịch vụ trên hệ thống.
Nhóm quản lý tập tin & thư mục Get-ChildItem, Copy-Item, Move-Item, Remove-Item Quản lý tập tin và thư mục trên hệ thống.
Nhóm quản trị hệ thống Invoke-Command, Set-ExecutionPolicy Quản lý lệnh từ xa và thiết lập quyền thực thi script.
Nhóm quản lý dữ liệu Export-Csv, Import-Csv Xuất và nhập dữ liệu dưới dạng CSV.
Nhóm liên quan mạng Test-Connection, Test-NetConnection, Get-NetAdapter Kiểm tra kết nối mạng, kiểm tra cổng, thông tin card mạng.
Nhóm kiểm tra nhật ký sự kiện Get-EventLog, Get-WinEvent Truy xuất thông tin từ nhật ký sự kiện Windows.
Nhóm quản lý tiến trình nền Start-Job, Get-Job, Receive-Job Chạy tiến trình trong nền, kiểm tra và lấy kết quả công việc.

Mẹo sử dụng các lệnh trong Powershell hiệu quả hơn

Hiểu cấu trúc cơ bản của các lệnh trong Powershell

Trước khi khám phá các lệnh nâng cao, bạn cần nắm vững cú pháp và cấu trúc cơ bản của PowerShell. Các lệnh trong PowerShell gọi là cmdlet (đọc là “command-lets”) có dạng:

Động_từ-Danh_từ [-ThamSố GiáTrị]

Ví dụ, để liệt kê tất cả các tệp trong thư mục, bạn dùng:

Get-ChildItem C:\Path\To\Directory

Hiểu rõ các động từ thông dụng như Get, Set, New, Remove giúp bạn thao tác nhanh hơn trong môi trường Windows:

  • Get: Lấy thông tin (ví dụ: Get-Process)
  • Set: Thiết lập giá trị (ví dụ: Set-ExecutionPolicy)
  • New: Tạo mới một đối tượng (ví dụ: New-Item)
  • Remove: Xóa đối tượng (ví dụ: Remove-Item)

Tận dụng PowerShell Pipeline để xử lý dữ liệu

Pipeline (|) là một trong những tính năng mạnh nhất của PowerShell, cho phép bạn truyền đầu ra của một cmdlet thành đầu vào của cmdlet khác, giúp xử lý dữ liệu nhanh chóng.

Ví dụ, để tìm tất cả các tệp .txt trong thư mục và hiển thị nội dung của chúng, bạn có thể dùng:

Get-ChildItem -Path C:\Path\To\Directory -Filter *.txt | Get-Content

Pipeline giúp giảm thiểu các thao tác thủ công và tối ưu hóa quy trình làm việc.

Quản lý hệ thống từ xa bằng PowerShell

Nếu bạn đang làm việc với nhiều máy tính trong hệ thống mạng, PowerShell hỗ trợ quản lý từ xa thông qua cmdlet Invoke-Command. Điều này giúp bạn thực thi lệnh mà không cần kết nối Remote Desktop.

Ví dụ, để chạy lệnh trên máy tính từ xa:

Invoke-Command -ComputerName RemotePC -ScriptBlock { Get-Service }

Bạn có thể kết hợp với -Credential để xác thực tài khoản quản trị viên khi cần.

Tự động hóa công việc bằng PowerShell Script

PowerShell hỗ trợ tạo script tự động hóa, giúp bạn tiết kiệm thời gian cho các tác vụ lặp đi lặp lại. Để tạo script, hãy lưu file với định dạng .ps1 và chạy bằng PowerShell ISE hoặc VS Code.

Trước khi chạy, hãy thiết lập chính sách thực thi với lệnh:

Set-ExecutionPolicy RemoteSigned

Sau đó, chạy script với:

.\MyScript.ps1

Việc sử dụng script giúp giảm thiểu sai sót và tối ưu hóa quy trình vận hành.

Tận dụng hệ thống trợ giúp PowerShell

PowerShell cung cấp hệ thống tài liệu hỗ trợ mạnh mẽ. Nếu cần tìm hiểu về một cmdlet cụ thể, bạn chỉ cần sử dụng lệnh:

Get-Help Get-Process

Hệ thống trợ giúp sẽ hiển thị hướng dẫn, ví dụ sử dụng và thông tin tham số, giúp bạn nhanh chóng nắm bắt kiến thức.

Ngoài ra, bạn có thể tìm kiếm tài nguyên từ cộng đồng PowerShell, các blog chuyên sâu và diễn đàn công nghệ để cập nhật kiến thức mới nhất.

Các câu hỏi thường gặp về các lệnh trong Powershell

Làm thế nào để lưu lại lịch sử các lệnh trong Powershell đã nhập?

Bạn có thể lưu lại lịch sử các lệnh đã nhập trong PowerShell bằng cách sử dụng lệnh Get-History để hiển thị danh sách các lệnh đã chạy trong phiên hiện tại. 

Để lưu lịch sử vào tệp, bạn có thể dùng: 

Get-History | Export-Csv C:\history.csv -NoTypeInformation 

Ngoài ra, PowerShell cũng lưu lịch sử phiên gần đây trong tệp ConsoleHost_history.txt, nằm tại thư mục %APPDATA%\Microsoft\Windows\PowerShell\PSReadLine\.

Làm thế nào để xem thông tin chi tiết về một lệnh PowerShell?

Bạn có thể xem thông tin chi tiết về một lệnh PowerShell bằng cách sử dụng cmdlet Get-Help theo sau là tên lệnh. Ví dụ:

Get-Help Get-Process 

Để hiển thị hướng dẫn chi tiết hơn, bao gồm ví dụ sử dụng, bạn có thể thêm tham số -Detailed hoặc -Examples, chẳng hạn:

Get-Help Get-Process -Detailed

Làm sao để chạy nhiều lệnh PowerShell cùng lúc?

Bạn có thể chạy nhiều lệnh PowerShell cùng lúc bằng cách sử dụng dấu chấm phẩy (;) để tách các lệnh trong cùng một dòng. Ví dụ:

Get-Process; Get-Service 

Ngoài ra, bạn có thể sử dụng dấu && để chỉ chạy lệnh tiếp theo nếu lệnh trước đó thành công hoặc dùng | (pipeline) để truyền đầu ra từ lệnh này sang lệnh khác.

Làm thế nào để tạm dừng thực thi lệnh trong PowerShell?

Bạn có thể tạm dừng thực thi lệnh trong PowerShell bằng cách sử dụng lệnh Start-Sleep và chỉ định thời gian tạm dừng (tính bằng giây). Ví dụ:

Start-Sleep -Seconds 5 

Ngoài ra, nếu đang chạy một script, bạn có thể sử dụng Read-Host để chờ người dùng nhập dữ liệu trước khi tiếp tục:

Read-Host "Nhấn Enter để tiếp tục"

Tổng kết các lệnh trong Powershell

Việc thành thạo các lệnh trong PowerShell không chỉ giúp bạn quản lý hệ thống hiệu quả mà còn tự động hóa nhiều tác vụ quan trọng. Dù là người mới hay đã có kinh nghiệm, việc thực hành thường xuyên sẽ giúp bạn làm chủ công cụ này nhanh chóng. Hãy áp dụng ngay những lệnh PowerShell hữu ích để nâng cao hiệu suất làm việc của bạn!