Загрузка данных


$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
    }
}