Or, Disk usage report
PowerShell script
Or, PowerShell script
for disk usage report with .txt file input
Or, Export disk usage
report to CSV for multiple windows computers
Descriptions: Disk
usage report for storage optimization or to keep track of disk usage trends is
one of the important routine task for every administrator. In this article, we
would be exploring the PowerShell script to get disk usage report of multiple
windows machines in to excel or CSV file.
In this article, we will prepare the scenario and logical environment,
lastly we will run the PowerShell script to get the CSV report in desired
folder location.
What has been covered
in this script?
This script is designed for getting disk usage report of
windows machines listed in ServersList.txt
text file. It will keep only last 30 days report in the folder DiskUsageReports.
Prerequisites:
1. Administrative privilege to run the script
2. List of servers/computers name or IP in a text file
3. Basic knowledge of PowerShell commands
Prepare the environment – Get Ready
Create a root folder and three child folders like:
1. Root folder name: DiskUsage
2. Child folders name: DiskUsageReports,
DiskUsageReportScript, and ServersList
Prepare a text
file with Name ServersList.txt and
place it in ServersList folder. This
text file should contain the list of windows machines you wish to export disk
usage report.
You can use name or IP as shown in below screenshot:
Finally, create the PowerShell script with following commands.
Simply copy and paste the given commands in PowerShell ISE windows and save it
as .ps1 file under DiskUsageScript folder with name DiskUsageReport.ps1
===============================================================
$OldReports = (Get-Date).AddDays(-30)
Get-ChildItem D:\DiskUsage\DiskUsageReports\*.* | `
Where-Object { $_.LastWriteTime -le
$OldReports} |
`
Remove-Item -Recurse
-Force -ErrorAction
SilentlyContinue
$LogDate = get-date -f yyyyMMddhhmm
$File = Get-Content -Path D:\DiskUsage\ServersList\ServersList.txt
$DiskReport = ForEach ($Servernames in
($File))
{Get-WmiObject win32_logicaldisk
<#-Credential $RunAccount#> `
-ComputerName $Servernames
-Filter "Drivetype=3"
`
-ErrorAction SilentlyContinue
}
$DiskReport |
Select-Object @{Label =
"Server Name";Expression = {$_.SystemName}},
@{Label
= "Drive
Letter";Expression = {$_.DeviceID}},
@{Label
= "Total
Capacity (GB)";Expression = {"{0:N1}" -f(
$_.Size
/ 1gb)}},
@{Label
= "Free
Space (GB)";Expression = {"{0:N1}" -f(
$_.Freespace
/ 1gb )
}},
@{Label
= 'Free Space
(%)'; Expression = {"{0:P0}" -f
($_.freespace/$_.size)}} |
Export-Csv -path "D:\DiskUsage\DiskUsageReports\DiskReport_$logDate.csv"
–NoTypeInformation
=======================================================================
It should look like the below one:
Now you are done friends, just run the PowerShell script and
get the report you need...
Steps: Run the
prepared PowerShell Script
Right Click on the .ps1
script file and Click on Run with
PowerShell
Now go to DiskUsageReport
folder, you should have your CSV report ready there..
Cheers, Please write me back if you have any query or
feedback.