Nếu vẫn đang viết các script PowerShell tùy chỉnh cho những tác vụ truyền file cơ bản và báo cáo Excel, bạn đang làm việc quá sức. Các module PowerShell được thiết kế sẵn xử lý hầu hết những tác vụ phổ biến tốt hơn bất kỳ thứ gì bạn tự viết từ đầu.
6. PSReadLine
PSReadLine được tích hợp sẵn PowerShell theo mặc định, nhưng nhiều người, bao gồm cả những người dùng PowerShell nâng cao, không tận dụng hết lợi ích của nó. Module này bổ sung các tính năng chỉnh sửa dòng lệnh mạnh mẽ như highlight cú pháp, chỉnh sửa nhiều dòng và IntelliSense dự đoán.

Trước khi bắt đầu sử dụng, hãy chạy lệnh sau để cài đặt phiên bản PSReadLine mới nhất:
Install-Module -Name PSReadLine -Scope CurrentUser -Force
IntelliSense dự đoán dựa trên lịch sử lệnh để đề xuất hoàn thành khi bạn nhập. Để bật tính năng này, hãy chạy:
Set-PSReadLineOption -PredictionSource History
Set-PSReadLineOption -PredictionViewStyle ListView
Hãy đảm bảo bạn có một vài lệnh trong lịch sử - hãy thử chạy lệnh như ipconfig, Get-Service hoặc các lệnh PowerShell hữu ích khác.
5. ImportExcel
ImportExcel có hơn 14 triệu lượt tải xuống trên PowerShell Gallery, và điều này hoàn toàn có lý do. Nó cho phép bạn tạo bảng tính mà không cần cài đặt Excel, điều này rất quan trọng khi làm việc với máy chủ hoặc các script tự động hóa.

Gõ lệnh sau để cài đặt module:
Install-Module -Name ImportExcel -Scope CurrentUser
Module này hỗ trợ mọi thứ, từ các lệnh xuất cơ bản đến những tính năng phức tạp như pivot table, biểu đồ và định dạng có điều kiện.
4. PSWriteHTML
PSWriteHTML chuyển đổi đầu ra PowerShell thành báo cáo HTML với bảng, biểu đồ và bộ lọc. Đây là một cách tuyệt vời để tạo báo cáo và trang HTML từ các script PowerShell mà không cần bất kỳ kiến thức nào về HTML.

Gõ lệnh sau để cài đặt module:
Install-Module -Name PSWriteHTML -Scope CurrentUser
Ví dụ, để tạo báo cáo hệ thống về 10 tiến trình sử dụng CPU nhiều nhất:
Import-Module PSWriteHTML
$procs = Get-Process |
Select-Object Name, CPU, WorkingSet -First 10
New-HTML -TitleText "System Report" -FilePath "Report.html" -ShowHTML {
New-HTMLSection -HeaderText "Process Information" {
New-HTMLTable -DataTable $procs -Filtering -Buttons @('copyHtml5','excelHtml5')
}
}
HTML kết quả bao gồm các nút sắp xếp, lọc và thậm chí cả nút xuất được hỗ trợ bởi JavaScript.

3. PSWindowsUpdate
PSWindowsUpdate là module được tải xuống nhiều nhất trên PowerShell Gallery, với hơn 33 triệu lượt tải xuống. Đúng như tên gọi, module này bao gồm các cmdlet để quản lý Windows Update Client.

Gõ lệnh sau để cài đặt module:
Install-Module -Name PSWindowsUpdate -Scope CurrentUser
Module này bao gồm các cmdlet cho mọi thao tác Windows Update mà bạn có thể cần - hoàn hảo cho quy trình làm việc tự động hóa PowerShell. Trong thời gian bảo trì, bạn có thể kiểm tra các bản cập nhật đang chờ xử lý trên tất cả những máy chủ cùng lúc bằng cách sử dụng:
$Servers = 'SERVER01','SERVER02','SERVER03'
Invoke-Command -ComputerName $Servers -ScriptBlock {
Import-Module PSWindowsUpdate
Get-WindowsUpdate -MicrosoftUpdate |
Select-Object @{n='Computer';e={$env:COMPUTERNAME}}, KB, Title, Size, IsDownloaded, IsInstalled, RebootRequired
} | Sort-Object Computer, KB | Format-Table -AutoSize
2. Terminal-Icons
Terminal-Icons giúp bạn làm cho terminal PowerShell của mình trở nên thú vị hơn bằng cách thêm các biểu tượng loại file vào danh sách thư mục PowerShell. Mỗi loại file có biểu tượng và màu sắc riêng biệt, giúp việc điều hướng thư mục dễ dàng hơn rất nhiều.

Gõ lệnh sau để cài đặt module:
Install-Module -Name Terminal-Icons -Scope CurrentUser
Module này kết nối với định dạng đầu ra Get-ChildItem. Sau khi cài đặt, hãy gõ:
Import-Module Terminal-Icons
Giờ đây, khi bạn sử dụng Get-ChildItem hoặc các alias của nó, mỗi loại file sẽ hiển thị biểu tượng và màu sắc riêng.
1. Transferetto
Transferetto là một module PowerShell giúp việc làm việc với FTP, FTPS và SFTP dễ dàng hơn rất nhiều. Thay vì phải chuyển xuống các lớp .NET hoặc cài đặt thêm những công cụ bên ngoài, bạn sẽ có các cmdlet gọn, nguyên bản của PowerShell.

Gõ lệnh sau để cài đặt module:
Install-Module -Name Transferetto -Scope CurrentUser
Quy trình làm việc sẽ quen thuộc nếu bạn đã từng sử dụng các module cơ sở dữ liệu. Bạn kết nối, thực hiện công việc, sau đó ngắt kết nối:
$Client = Connect-FTP -Server "ftp.example.com" -Credential (Get-Credential)
Send-FTPFile -Client $Client -LocalPath "C:\Reports\Report1.xlsx" -RemotePath "/uploads/"
Disconnect-FTP -Client $Client
Ngoài những tính năng cơ bản, Transferetto hỗ trợ các tùy chọn SSL, chế độ mã hóa, switch xác thực chứng chỉ và lệnh Request-FTPConfiguration tiện dụng có thể tự động kiểm tra cài đặt kết nối máy chủ cho bạn.