Estimated reading time: 2 minutes
Monitor Disk Space with PowerShell in 2025
Tracking disk space is a timeless IT task, but in 2025, PowerShell 7.4 brings cross-platform power and cloud integration to the table. Whether you’re managing local servers or Azure VMs, this guide delivers a modern script to keep your drives in check.
Local Disk Monitoring (Windows/Linux)
Step 1: Run the Script
Fire up PowerShell 7.4 (download from GitHub if you’re still on 5.1). Paste this:
# Get disk space in GB
$drives = Get-Volume | Where-Object {$_.OperationalStatus -eq 'OK'} |
Select-Object @{Name='Drive';Expression={$_.DriveLetter + ':'}},
@{Name='FreeGB';Expression={[math]::Round($_.SizeRemaining/1GB,2)}},
@{Name='TotalGB';Expression={[math]::Round($_.Size/1GB,2)}}
$drives | Format-Table -AutoSize
Step 2: Export (Optional)
Save to CSV: $drives | Export-Csv "DiskSpace_$(Get-Date -Format 'yyyyMMdd').csv" -NoTypeInformation
. Open in Excel for reports.
Cloud Monitoring (Azure VMs)
Step 1: Connect
Install the Az module (Install-Module -Name Az
), then log in: Connect-AzAccount
.
Step 2: Query VMs
Run this to list Azure VMs and their total disk sizes:
$vms = Get-AzVM | ForEach-Object {
$disk = Get-AzDisk -ResourceGroupName $_.ResourceGroupName -DiskName $_.StorageProfile.OsDisk.Name
[PSCustomObject]@{VMName=$_.Name; TotalGB=$disk.DiskSizeGB; FreeGB='Requires VM Agent'}
}
$vms | Format-Table -AutoSize
Step 3: Advanced Option
For true free space, install the Azure VM agent and use Invoke-AzVMRunCommand
to run Get-Volume
remotely—contact us for a full script!
2025 Edge: Why PowerShell 7?
PowerShell 7.4’s speed and JSON support (try $drives | ConvertTo-Json
) outshine old 5.1 Get-PSDrive tricks. It’s cross-platform—run it on Linux with no changes.
Want more automation? See our Windows 11 Deployment Guide for setup tips.
Share this content:
Discover more from TechyGeeksHome
Subscribe to get the latest posts sent to your email.