# Sample: read-only local disk inventory. No remote hosts or credentials. [CmdletBinding()] param([ValidateRange(1,99)][int]$WarningPercent = 15) $ErrorActionPreference = 'Stop' Get-CimInstance Win32_LogicalDisk -Filter 'DriveType=3' | Where-Object { $_.Size -gt 0 } | ForEach-Object { $freePercent = [math]::Round(100 * $_.FreeSpace / $_.Size, 1) [pscustomobject]@{ Drive = $_.DeviceID FreeGB = [math]::Round($_.FreeSpace / 1GB, 1) FreePercent = $freePercent Status = if ($freePercent -lt $WarningPercent) { 'Review' } else { 'OK' } } }