Мониторинг дискового пространства

Есть не мало решений позволяющих мониторить свободное дисковое пространство в ОС Windows, но все они либо платные, либо тяжелые, поэтому пришлось написать скрипт на VBA, который выполняет только эту задачу. Никакого дополнительного ПО ставить не нужно, скрипт работает на ОС Windows XP, на серверных Windows 2003 и 2008. Скрипт запускается по шедулеру, проверяет свободное место на указанных дисках, если места меньше 5% от размера раздела либо меньше 4Гб (эти значения можно изменить), скрипт отправляет письмо на указанный e-mail адрес с предупреждением.

Собственно код скрипта:

df.vbs

'Disk free by Yury Konovalov (c) 2011
'select disk for monitoring
disks="C,D,E" 'Диски которые нужно мониторить
Dim fso1
Set fso1 = WScript.CreateObject("Scripting.FileSystemObject")
Set oDrives = fso1.Drives
disk = Split(disks,",")
For i = 0 To Ubound(disk)
    Set oDrive1 = fso1.GetDrive(disk(i))
    totalSize = FormatNumber (oDrive1.TotalSize,0)
    freeSize = FormatNumber (oDrive1.FreeSpace,0)
    Onepercent=totalsize/100
    percent=Cint(freesize/Onepercent)
    totalsize=CLng(totalsize/1024/1024)
    freesize=CLng(freesize/1024/1024)
    Set WshNetwork = WScript.CreateObject("WScript.Network")
    'WScript.Echo  WshNetwork.ComputerName
    Set objSystemInfo = CreateObject("ADSystemInfo")
    'wscript.echo objSystemInfo.DomainShortName
    'Здесь можно поменять значения пределов, на которые будет реагировать скрипт
    if freesize < 4096 or percent < 5 then
    ends="<br>"&chr(13)&chr(10)
    msg = "<html>Domain:<b>"&objSystemInfo.DomainShortName&ends&"</b>Hostmame: <b>"&WshNetwork.ComputerName&ends&"</b>Disk <b>"&disk(i)&":"&ends&"</b>Total Size: <b>"&totalsize&" MB</b>"&ends&"Free Size: <b>"&freesize&" MB</b>"&ends&"Free: <b>"&percent&"%</b>"
    msg=msg&"<p></html>"
    'Msgbox msg
    sendMail()
    end if
Next
Function sendMail()
' Параметры отправки сообщения
strSmtpServer="mail.domain.com" ' имя почтового сервера, в моем случае это Exchange
strSmtpPort=25
strSmtpAuth="no"
strSmtpSsl="no"
strSendingEmail="diskfree@domain.com" ' Имя отправителя
strReportEmail="admin@domain.com" ' Имя получателя
'WScript.Echo logPath & "\backup" & strDate & ".html"
Set objMessage = CreateObject("CDO.Message")
objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = strSmtpServer
objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = strSmtpPort
If strSmtpAuth = "yes" Then
objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1 'use '2' for NTLM authentication
objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = strSmtpUser
objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = strSmtpPass
End If
If strSmtpSsl = "yes" Then
objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True
End If
objMessage.Configuration.Fields.Update
objMessage.Subject = "Warning! Disk is full" & strDate & "."
objMessage.From = strSendingEmail
objMessage.To = strReportEmail
objMessage.HTMLBody = msg
objMessage.Send
End Function

Пример сообщения:

subject:Warning! Disk is full.

Domain:KRUL

Hostmame: ASUSS2

Disk C:

Total Size: 20075 MB

Free Size: 4091 MB

Free: 20%

Способ мониторинга дискового пространства в Linux описан тут:мониторинг дисового пространства в linux