Статья давно не обновлялась, поэтому информация могла устареть.
Для оповещения об исчерпании свободного места используем Powershell-скрипт с расширением ps1, представленный ниже Скачать скрипт Для работы скрипта необходим почтовый ящик, локальный/удаленный не имеет значения. Необходимо скачать скрипт и заполнить поля в разделе Enviroments. В скрипте можно задать аварийный и критический уровень исчерпания места. После создания скрипта требуется добавить его исполнение в планировщик.
#http://www.ionline.by #Enviroments #Путь к файлам логов, например, c:\logs\ $logpath = 'ENTER_LOG_PATH' #Имя Лог-файла $lname = 'hdd-freespace.log' #IP-адрес или доменное имя почтового сервера, например, mail.example.com $IPMailServer="ENTER_IP_OR_NAME_MAIL_SERVER" #Адрес отправителя. Внимание, он же является логином для авторизации. $SenderEmail="ENTER_SENDER_E-MAIL" #Адрес получателя $RecipientEmail="ENTER_RECIPIENT_E-MAIL" #Пароль на ящик $pass = 'E-MAIL_PASSWORD' #Уровень предупреждения о окончании места. Указывается в процентах, от 1 до 100 $WarnSpace = '20' #Аварийный уровень. Указывается в процентах $Alarm = '5' #Functions function Send-mail ($subj = "VM" ,$body = "Text", $AttachPath = "0") { $SMTPClient = new-object System.Net.Mail.SMTPClient $Msg = new-object System.Net.Mail.MailMessage if ($AttachPath -ne "0") { $Attach = new-object System.Net.Mail.Attachment($AttachPath) $Msg.Attachments.add($Attach) } $Msg.To.Add($RecipientEmail) $Msg.from=$SenderEmail $Msg.Subject = $subj $Msg.Body= $body $SMTPClient.Host=$IPMailServer $SMTPClient.Credentials=New-Object System.Net.NetworkCredential "$SenderEmail" , "$pass" $SMTPClient.Send($Msg) #$Attach.Dispose() } #Code $time = Get-Date $servname = $env:computername "$time" >> $logpath\$lname "Начало проверки количества свободного места на логических дисках сервера $servname" >> $logpath\$lname gwmi win32_logicaldisk -filter "drivetype = 3" | foreach { $did = $_.DeviceID $vname = $_.VolumeName $allspace = $([Math]::Round($_.Size / 1GB)) $fsp = $([Math]::Round($_.FreeSpace / 1GB)) $freeprc = ( $fsp / $allspace )*100 $freeprc = $([Math]::Round($freeprc)) if ( $freeprc -ile $WarnSpace ) { if ( $freeprc -ile $Alarm ) { "$time" >> $logpath\$lname $uspace = $allspace - $fsp $uprc = 100 - $freeprc "КРИТИЧЕСКАЯ ОШИБКА!!! на $servname на диске $did метка $vname осталось $freeprc % свободного места ($fsp Гб). Требуется принять меры!" >> $logpath\$lname "Дополнительная информация о данном разделе:" >> $logpath\$lname "Идентификатор:............................$did" >> $logpath\$lname "Метка тома:...............................$vname" >> $logpath\$lname "Полный объем диска:.......................$allspace" >> $logpath\$lname "Свободное пространство на диске в ГБ:.....$fsp" >> $logpath\$lname "Свободное пространство на диске в %:.....$freeprc" >> $logpath\$lname "Использовано на диске ГБ:.................$uspace" >> $logpath\$lname "Использовано на диске в %:.................$uprc" >> $logpath\$lname $date = Get-Date -UFormat %T Send-mail -subj "КРИТИЧЕСКАЯ ОШИБКА! $date - $servname" -body "$time !!!КРИТИЧЕСКАЯ ОШИБКА!!! На $servname на диске $did метка $vname осталось $freeprc % свободного места ($fsp Гб). Требуется принять меры! Дополнительная информация о аварийном разделе: Идентификатор:............................$did Метка тома:...............................$vname Полный объем диска:.......................$allspace Свободное пространство на диске в ГБ:.....$fsp Свободное пространство на диске в %:.....$freeprc Использовано на диске ГБ:.................$uspace Использовано на диске в %:.................$uprc " } else { "$time" >> $logpath\$lname $uspace = $allspace - $fsp $uprc = 100 - $freeprc "Внимание на $servname на диске $did метка $vname осталось $freeprc % свободного места ($fsp Гб). Требуется принять меры!" >> $logpath\$lname "Дополнительная информация о данном разделе:" >> $logpath\$lname "Идентификатор:............................$did" >> $logpath\$lname "Метка тома:...............................$vname" >> $logpath\$lname "Полный объем диска:.......................$allspace" >> $logpath\$lname "Свободное пространство на диске в ГБ:.....$fsp" >> $logpath\$lname "Свободное пространство на диске в %:.....$freeprc" >> $logpath\$lname "Использовано на диске ГБ:.................$uspace" >> $logpath\$lname "Использовано на дисе в %:.................$uprc" >> $logpath\$lname $date = Get-Date -UFormat %T Send-mail -subj "$date - $servname Предупреждение" -body "$time Внимание на $servname на диске $did метка $vname осталось $freeprc % свободного места ($fsp Гб). Требуется принять меры! Дополнительная информация о аварийном разделе: Идентификатор:............................$did Метка тома:...............................$vname Полный объем диска:.......................$allspace Свободное пространство на диске в ГБ:.....$fsp Свободное пространство на диске в %:.....$freeprc Использовано на диске ГБ:.................$uspace Использовано на диске в %:.................$uprc " } } else { "$time" >> $logpath\$lname $uspace = $allspace - $fsp $uprc = 100 - $freeprc "Результат проверки локального диска $did :" >> $logpath\$lname "Идентификатор:............................$did" >> $logpath\$lname "Метка тома:...............................$vname" >> $logpath\$lname "Полный объем диска:.......................$allspace" >> $logpath\$lname "Свободное пространство на диске в ГБ:.....$fsp" >> $logpath\$lname "Свободное пространство на диске в %:.....$freeprc" >> $logpath\$lname "Использовано на диске ГБ:.................$uspace" >> $logpath\$lname "Использовано на диске в %:.................$uprc" >> $logpath\$lname } }