<# .SYNOPSIS Checks the drive space .DESCRIPTION This PowerShell script checks the given drive for free space left (10 GB by default). .PARAMETER driveName Specifies the drive name to check (e.g. "C") .PARAMETER minLevel Specifies the minimum level in bytes (10GB by default) .EXAMPLE PS> ./check-drive-space.ps1 C ✅ Drive C: uses 56% of 1TB - 442GB free .LINK https://github.com/fleschutz/PowerShell .NOTES Author: Markus Fleschutz | License: CC0 #> param([string]$driveName = "", [int64]$minLevel = 10 * 1000 * 1000) # GB function Bytes2String { param([int64]$bytes) if ($bytes -lt 1000) { return "$bytes bytes" } $bytes /= 1000 if ($bytes -lt 1000) { return "$($bytes)KB" } $bytes /= 1000 if ($bytes -lt 1000) { return "$($bytes)MB" } $bytes /= 1000 if ($bytes -lt 1000) { return "$($bytes)GB" } $bytes /= 1000 if ($bytes -lt 1000) { return "$($bytes)TB" } $bytes /= 1000 return "$($bytes)PB" } try { if ($driveName -eq "" ) { $driveName = Read-Host "Enter the drive name to check" } $details = (Get-PSDrive $driveName) if (-not $IsLinux) { $driveName = $driveName + ":" } [int64]$free = $details.Free [int64]$used = $details.Used [int64]$total = ($used + $free) if ($total -eq 0) { Write-Host "✅ Drive $driveName is empty" } elseif ($free -eq 0) { Write-Host "⚠️ Drive $driveName with $(Bytes2String $total) is full" } elseif ($free -lt $minLevel) { Write-Host "⚠️ Drive $driveName with $(Bytes2String $total) is nearly full, $(Bytes2String $free) free" } else { [int64]$percent = ($used * 100) / $total Write-Host "✅ Drive $driveName uses $percent% of $(Bytes2String $total) - $(Bytes2String $free) free" } exit 0 # success } catch { "⚠️ Error in line $($_.InvocationInfo.ScriptLineNumber): $($Error[0])" exit 1 }