$logFile = "disk_alert.log"
Add-Type -AssemblyName System.Windows.Forms
$disks = Get-PSDrive -PSProvider FileSystem
foreach ($disk in $disks) {
$freePercent = ($disk.Free / $disk.Used) * 100
$freeGB = [math]::Round($disk.Free / 1GB, 2)
$totalGB = [math]::Round(($disk.Free + $disk.Used) / 1GB, 2)
if ($freePercent -lt 10) {
$message = "[$($disk.Name)] Свободно $([math]::Round($freePercent,1))% ($freeGB из $totalGB ГБ)"
"$(Get-Date -Format 'yyyy-MM-dd HH:mm:ss') - $message" | Out-File $logFile -Append
[System.Windows.Forms.MessageBox]::Show($message, "Критически мало места", 'OK', 'Error')
Write-Host $message -ForegroundColor Red
}
else {
Write-Host "[$($disk.Name)] Свободно $([math]::Round($freePercent,1))% ($freeGB из $totalGB ГБ)" -ForegroundColor Green
}
}