Script: *check-drive-space.ps1* ======================== This PowerShell script checks the given drive for free space left (10 GB by default). Parameters ---------- ```powershell PS> ./check-drive-space.ps1 [[-driveName] ] [[-minLevel] ] [] -driveName Specifies the drive name to check (e.g. "C") Required? false Position? 1 Default value Accept pipeline input? false Accept wildcard characters? false -minLevel Specifies the minimum level in bytes (10GB by default) Required? false Position? 2 Default value 10000000 Accept pipeline input? false Accept wildcard characters? false [] This script supports the common parameters: Verbose, Debug, ErrorAction, ErrorVariable, WarningAction, WarningVariable, OutBuffer, PipelineVariable, and OutVariable. ``` Example ------- ```powershell PS> ./check-drive-space.ps1 C ✅ Drive C: has 442GB free (56% of 1TB used) ``` Notes ----- Author: Markus Fleschutz | License: CC0 Related Links ------------- https://github.com/fleschutz/PowerShell Script Content -------------- ```powershell <# .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: has 442GB free (56% of 1TB used) .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 has $(Bytes2String $free) free ($percent% of $(Bytes2String $total) used)" } exit 0 # success } catch { "⚠️ Error in line $($_.InvocationInfo.ScriptLineNumber): $($Error[0])" exit 1 } ``` *(generated by convert-ps2md.ps1 using the comment-based help of check-drive-space.ps1 as of 03/27/2024 17:36:24)*