To find Drive Names, Total Space, Free Space and Free Space Percentage for the list of Servers specified in computers.txt file using Power Shell Script.
Prerequisites:-
- Save the computers.txt file and below PS script in the same folder
- User should have access to the servers mentioned in computers.txt file
- There should not be any empty space or new line without Servername in computers.txt file

PS Script:-
$path=Split-Path $MyInvocation.MyCommand.path
$Computers = get-content "$path\computers.txt"
foreach ($Computer in $Computers)
{
$Disks = Get-wmiobject Win32_LogicalDisk -computername $Computer -ErrorAction SilentlyContinue -filter "DriveType= 3"
$Servername = (Get-wmiobject CIM_ComputerSystem -ComputerName $computer).Name
foreach ($objdisk in $Disks)
{
$total=“{0:N3}” -f ($objDisk.Size/1GB)
$free= “{0:N3}” -f ($objDisk.FreeSpace/1GB)
$freePercent="{0:P2}" -f ([double]$objDisk.FreeSpace/[double]$objDisk.Size)
Write-Host "Servername :" $Servername
Write-Host "Drive Folder :" $objDisk.DeviceID "Drive"
Write-Host "Total size (GB) :" $total
Write-Host "Free Space (GB) :" $free
Write-Host “Free Space (%) :” $freePercent
}
}
Output:-

To save the Output to Diskspace_Report.csv file, Use below PS script:-
$path=Split-Path $MyInvocation.MyCommand.path
$Computers = get-content "$path\computers.txt"
foreach ($Computer in $Computers)
{
$Disks = Get-wmiobject Win32_LogicalDisk -computername $Computer -ErrorAction SilentlyContinue -filter "DriveType= 3"
$Servername = (Get-wmiobject CIM_ComputerSystem -ComputerName $computer).Name
foreach ($objdisk in $Disks)
{
$total=“{0:N3}” -f ($objDisk.Size/1GB)
$free= “{0:N3}” -f ($objDisk.FreeSpace/1GB)
$freePercent="{0:P2}" -f ([double]$objDisk.FreeSpace/[double]$objDisk.Size)
$out=New-Object PSObject
$out | Add-Member -MemberType NoteProperty -Name "Servername" -Value $Servername
$out | Add-Member -MemberType NoteProperty -Name "Drive" -Value $objDisk.DeviceID
$out | Add-Member -MemberType NoteProperty -Name "Total size (GB)" -Value $total
$out | Add-Member -MemberType NoteProperty -Name “Free Space (GB)” -Value $free
$out | Add-Member -MemberType NoteProperty -Name “Free Space (%)” -Value $freePercent
$out | Add-Member -MemberType NoteProperty -Name "Name " -Value $objdisk.volumename
$out | Add-Member -MemberType NoteProperty -Name "DriveType" -Value $objdisk.DriveType
$out | export-csv $path\Diskspace_Report.csv -NoTypeInformation -Append
}
}
One thought on “Using Windows Power Shell to get the Server Disk Space Information”