If you’re still writing custom PowerShell scripts for basic file transfers and Excel reports, you’re working too hard. Ready-made PowerShell modules handle most common tasks better than anything you’ll write from scratch.
To install these modules, you’ll need PowerShell 5.1 or higher. Most modules work cross-platform on PowerShell 7, though some are Windows-specific. Make sure you can run scripts by setting your execution policy:
Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned -Force
We’ll install all modules using the same pattern with the -Scope CurrentUser parameter to avoid needing admin rights.
PSReadLine ships with PowerShell by default, but I know many people, including some advanced PowerShell users, who don’t take full advantage of it. This module adds powerful command-line editing features such as syntax highlighting, multi-line editing, and predictive IntelliSense.
Before you start using it, run the following command to install the latest version of PSReadLine:
Install-Module -Name PSReadLine -Scope CurrentUser -Force
Predictive IntelliSense builds on your command history to suggest completions as you type. To enable it, run:
Set-PSReadLineOption -PredictionSource History
Set-PSReadLineOption -PredictionViewStyle ListView
Make sure you’ve got a few commands in your history—try running something like ipconfig, Get-Service, or other useful PowerShell commands.
Now, as you begin typing, PowerShell will display suggestions from your history. You can scroll through them with the arrow keys; press the Up/Down Arrow keys to select from ListView predictions, and hit Enter to execute.
ImportExcel has over 14 million downloads on the PowerShell Gallery, and for good reason. It allows you to create Excel spreadsheets without having Excel installed, which is important when working with servers or automation scripts.
Type the following command to install the module:
Install-Module -Name ImportExcel -Scope CurrentUser
The module supports everything from basic exports to complex features like pivot tables, charts, and conditional formatting. Here’s a common use case: exporting process information to a formatted spreadsheet:
Get-Service | Where-Object {$_.Status -eq "Running"} |
Export-Excel -Path "ServiceReport.xlsx" -AutoSize -TableStyle Medium9 -FreezeTopRow
The above command gets all running services, exports them to an Excel file with auto-sized columns, applies a table style, and freezes the header row for easier scrolling.
PSWriteHTML turns PowerShell output into HTML reports with tables, charts, and filtering. It’s a great way to create HTML reports and pages from PowerShell scripts without any HTML knowledge.
Type the following command to install the module:
Install-Module -Name PSWriteHTML -Scope CurrentUser
For instance, to create a system report with the top 10 processes by CPU usage:
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')
}
}
The resulting HTML includes JavaScript-powered sorting, filtering, and even export buttons.
PSWindowsUpdate is the most downloaded module on the PowerShell Gallery, with over 33 million downloads. As the name suggests, it consists of cmdlets to manage the Windows Update Client.
Type the following command to install the module:
Install-Module -Name PSWindowsUpdate -Scope CurrentUser
The module includes cmdlets for every Windows Update operation you might need—perfect for PowerShell automation workflows. During maintenance windows, you can check pending updates across all servers simultaneously using:
$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
This quickly shows pending updates across all servers. You can also install specific updates, hide problematic ones, or schedule installations. Use the -AcceptAll parameter to skip confirmations. The module can even handle driver updates if you need them.
Terminal-Icons helps you spice up your PowerShell terminal by adding file type icons to your PowerShell directory listings. Each file type gets its own distinct icon and color, making it a lot easier to navigate directories.
Type the following command to install the module:
Install-Module -Name Terminal-Icons -Scope CurrentUser
This module hooks into Get-ChildItem output formatting. After installation, type:
Import-Module Terminal-Icons
Now, when you use Get-ChildItem or its aliases, each file type shows its own icon and color. PowerShell scripts show up with the PowerShell logo, folders get folder icons, and so on. Apart from looking pretty, it makes jumping between terminal tabs and folders much easier. Remember that you’ll need a Nerd Font installed in your terminal for the icons to display correctly.
Transferetto is a PowerShell module that makes working with FTP, FTPS, and SFTP a whole lot easier. Instead of dropping down into .NET classes or bolting on external tools, you get clean, PowerShell-native cmdlets.
Type the following command to install the module:
Install-Module -Name Transferetto -Scope CurrentUser
The workflow feels familiar if you have ever used database modules. You connect, do your work, then disconnect:
$Client = Connect-FTP -Server "ftp.example.com" -Credential (Get-Credential)
Send-FTPFile -Client $Client -LocalPath "C:ReportsReport1.xlsx" -RemotePath "/uploads/"
Disconnect-FTP -Client $Client
Beyond the basics, Transferetto supports SSL options, encryption modes, certificate validation switches, and a handy Request-FTPConfiguration command that can auto-test server connection settings for you.
It’s not limited to single files either. You can push entire directories with Send-FTPDirectory, or even do FXP transfers (server-to-server copies). There is support for SFTP and SSH as well, so you can run remote commands right alongside your transfers.
Since it works on both Windows PowerShell 5.1 and PowerShell 7+, your scripts will run across Windows, Linux, and macOS without any changes.
Even if you only use PowerShell for basic tasks, learning a few modules can make a huge difference. PSReadLine helps you type faster with quick suggestions from your history, ImportExcel lets you work with spreadsheets without opening Excel, and Terminal-Icons makes your shell more readable.
You can find thousands of other modules on the PowerShell Gallery, though be sure to check their update dates and compatibility before installing. Start with one or two modules that solve your biggest pain points, then gradually add more as you get comfortable.