PowerShell là một công cụ quản trị mạnh mẽ trên Windows, cho phép bạn tự động hóa hàng loạt tác vụ. Một trong những thao tác thường xuyên nhất là cách liệt kê file bằng PowerShell để quản lý dữ liệu, kiểm tra dung lượng, lọc file theo ngày hoặc loại. Bài viết này sẽ cung cấp toàn bộ kiến thức từ lệnh Get-ChildItem cơ bản đến các kỹ thuật nâng cao, giúp bạn làm chủ việc liệt kê file một cách chuyên nghiệp.
Liệt kê file bằng PowerShell là gì?

Liệt kê file bằng PowerShell là quá trình sử dụng các lệnh ghép (cmdlet) để hiển thị danh sách các tệp tin và thư mục trong một đường dẫn cụ thể. Khác với Command Prompt (CMD), PowerShell hỗ trợ đối tượng (object), giúp bạn dễ dàng lọc, sắp xếp và xuất dữ liệu ra nhiều định dạng khác nhau như CSV, HTML hay XML. Đây là kỹ năng nền tảng cho bất kỳ quản trị viên hệ thống hay nhà phát triển nào.
Tổng quan về lệnh Get-ChildItem

Lệnh quan trọng nhất trong cách liệt kê file bằng PowerShell là Get-ChildItem (viết tắt: gci, ls, dir). Lệnh này trả về các mục (item) trong một hoặc nhiều vị trí được chỉ định. Cú pháp cơ bản:
Get-ChildItem -Path <đường dẫn>
Ví dụ mở PowerShell và gõ:
Get-ChildItem -Path C:UsersPublicDocuments
Kết quả sẽ hiển thị tất cả các tệp và thư mục con trong thư mục Documents. Các thuộc tính như Tên, Loại, Kích thước, Ngày sửa đổi cuối đều hiện rõ.
Các tham số quan trọng của Get-ChildItem
Để cách liệt kê file bằng PowerShell được linh hoạt hơn, bạn cần nắm các tham số chính:
- -File: Chỉ lấy các tệp tin, bỏ qua thư mục.
- -Directory: Chỉ lấy các thư mục.
- -Recurse: Quét đệ quy tất cả thư mục con.
- -Filter: Lọc theo mẫu tên, ví dụ .txt, .log.
- -Include / -Exclude: Bao gồm hoặc loại trừ các mẫu cụ thể.
- -Depth: Giới hạn độ sâu đệ quy (PowerShell 5.0 trở lên).
- -Name: Chỉ xuất ra tên tệp dưới dạng chuỗi.
- Tích hợp pipeline: Kết quả trả về là đối tượng, dễ dàng chuyển sang lệnh khác (Export-Csv, Select-Object).
- Lọc linh hoạt: Hỗ trợ biểu thức chính quy (regex), kích thước, ngày tháng, thuộc tính mở rộng.
- Tự động hóa: Có thể viết script lặp lại tác vụ mà không cần can thiệp thủ công.
Ví dụ liệt kê tất cả file.pdf trong thư mục hiện tại và các thư mục con:
Get-ChildItem -Path. -Filter .pdf -Recurse -File
Phân loại các phương pháp liệt kê file

Có nhiều cách liệt kê file bằng PowerShell tùy theo mục đích sử dụng.
Hạn chế
- Độ phức tạp: Người mới dễ nhầm lẫn giữa các tham số và pipeline.
- Hiệu năng khi quét sâu: Với -Recurse trên toàn ổ đĩa, PowerShell có thể chậm nếu không dùng -Filter hợp lý.
- Quyền truy cập: Cần quyền administrator để liệt kê một số thư mục hệ thống.
So sánh PowerShell với Command Prompt (CMD) trong việc liệt kê file
| Tiêu chí | PowerShell | CMD |
|---|---|---|
| Lệnh cơ bản | Get-ChildItem, ls | dir |
| Định dạng đầu ra | Đối tượng (object) – có thể chọn, lọc, xuất | Văn bản thuần (text) |
| Lọc theo kích thước | Dễ dàng với Where-Object | Không hỗ trợ trực tiếp |
| Đệ quy | -Recurse + -Depth | dir /s |
| Biểu thức chính quy | Có (dùng -match, -like) | Rất hạn chế |
| Tự động hóa script | Mạnh mẽ, hướng đối tượng | Kịch bản batch đơn giản |
Rõ ràng, cách liệt kê file bằng PowerShell vượt trội hơn CMD về cả tính linh hoạt lẫn khả năng mở rộng. Nếu bạn muốn kiểm soát dữ liệu chuyên sâu, PowerShell là lựa chọn duy nhất.
Hướng dẫn chi tiết cách liệt kê file bằng PowerShell

1. Liệt kê tất cả file trong thư mục hiện tại
Mở PowerShell (Windows + X → Windows PowerShell hoặc Terminal).
Get-ChildItem -Path. hoặc gõ ls
Kết quả hiển thị cả thư mục và tệp. Để chỉ lấy tệp:
Get-ChildItem -File
2. Liệt kê file theo đuôi mở rộng (filter)
Lệnh: Get-ChildItem -Path C:Data -Filter .xlsx -File
Lệnh này trả về tất cả file Excel trong thư mục C:Data.
Trong PowerShell,
Dùng Get-ChildItem -Path. -File | Out-File -FilePath danhsach.txt.
Có thể liệt kê file với kích thước chính xác theo MB không?
Có. Dùng Select-Object để tính toán: Get-ChildItem | Select-Object Name, @{N=’SizeMB’;E={[math]::Round($_.Length/1MB,2)}}.
Tại sao lệnh Get-ChildItem không thấy file ẩn?
Mặc định PowerShell ẩn các file ẩn và hệ thống. Thêm tham số -Force để hiển thị.
Làm sao để liệt kê file từ nhiều thư mục cùng lúc?
Dùng ký tự đại diện hoặc regex: Get-ChildItem -Filter ‘report‘ -File hoặc Where-Object { $_.Name -like ‘report‘ }.
Có cách nào liệt kê file và xuất ra HTML dễ đọc không?
Có, dùng ConvertTo-Html: Get-ChildItem -Path. -File | ConvertTo-Html -Property Name, Length, LastWriteTime | Out-File report.html.
Kết luận
Cách liệt kê file bằng PowerShell là kỹ năng thiết yếu cho quản trị viên và người dùng chuyên sâu. Với Get-ChildItem là công cụ trung tâm, bạn có thể dễ dàng lọc, sắp xếp và xuất dữ liệu theo hàng trăm tiêu chí khác nhau. Từ những lệnh đơn giản như dir đến các pipeline phức tạp với Where-Object, Select-Object và Measure-Object, PowerShell mở ra khả năng quản lý file vượt xa giới hạn của Command Prompt truyền thống. Hãy thực hành thường xuyên với các tham số như -Recurse, -Filter, -Force để làm chủ hoàn toàn việc kiểm soát hệ thống tệp tin trên Windows. Đừng quên kiểm tra kỹ trước khi thực hiện các thao tác xóa hoặc di chuyển dữ liệu hàng loạt để tránh mất mát đáng tiếc.







