<#
.SYNOPSIS
	Checks the free space of all drives
.DESCRIPTION
	This PowerShell script checks all drives for free space left (10 GB by default).
.PARAMETER MinLevel
	Specifies the minimum warning level (10 GB by default)
.EXAMPLE
	PS> ./check-drives
.LINK
	https://github.com/fleschutz/PowerShell
.NOTES
	Author: Markus Fleschutz | License: CC0
#>

param([int]$MinLevel = 10) # 10 GB minimum

try {
	$Drives = Get-PSDrive -PSProvider FileSystem 
	foreach($Drive in $Drives) {
		$ID = $Drive.Name
		$Details = (Get-PSDrive $ID)
		[int]$Free = $Details.Free / 1GB
 		[int]$Used = $Details.Used / 1GB
		[int]$Total = ($Used + $Free)

		if ($Total -eq "0") {
			"✅ Drive $ID is empty."
		} elseif ($Free -lt $MinLevel) {
			"⚠️ Drive $ID has only $Free GB of $Total GB left to use!"
		} else {
			"✅ Drive $ID has $Free GB of $Total GB left."
		}
	}
	exit 0 # success
} catch {
	"⚠️ Error in line $($_.InvocationInfo.ScriptLineNumber): $($Error[0])"
	exit 1
}