PowerShell/Scripts/check-drives.ps1
2021-12-06 19:21:15 +01:00

41 lines
1.2 KiB
PowerShell
Executable File

<#
.SYNOPSIS
Checks all drives for free space left (20 GB by default)
.DESCRIPTION
This script checks all drives for free space left (20 GB by default).
.PARAMETER MinLevel
Specifies the minimum level in Gigabyte
.EXAMPLE
PS> ./check-drives
✔️ Drive C has 172GB left (233GB total)
.LINK
https://github.com/fleschutz/PowerShell
.NOTES
Author: Markus Fleschutz · License: CC0
#>
param([int]$MinLevel = 20) # minimum level in GB
try {
$Drives = Get-PSDrive -PSProvider FileSystem
foreach($Drive in $Drives) {
$DriveDetails = (Get-PSDrive $Drive.Name)
[int]$Free = (($DriveDetails.Free / 1024) / 1024) / 1024
[int]$Used = (($DriveDetails.Used / 1024) / 1024) / 1024
[int]$Total = ($Used + $Free)
if ($Total -eq "0") {
$Reply = "Drive $($Drive.Name) is empty."
} elseif ($Free -lt $MinLevel) {
$Reply = "Drive $($Drive.Name) has only $Free GB left to use! $Used of $Total GB is in use."
} else {
$Reply = "Drive $($Drive.Name) has $($Free) GB left, $($Total) GB total."
}
& "$PSScriptRoot/give-reply.ps1" "$Reply"
}
exit 0 # success
} catch {
"⚠️ Error: $($Error[0]) ($($MyInvocation.MyCommand.Name):$($_.InvocationInfo.ScriptLineNumber))"
exit 1
}