VB Script to check disk space and email results

Here is a script I hacked together that checks disk space of your servers and emails it to an address. This can be scheduled using Windows Task Scheduler.

Requirements:
- CDONTS – http://kb.swsoft.com/en/560
- Needs to be run under administrative rights

‘ Sample code for monitoring windows disk space

‘ This script reports the drive usage of all fixed drives on the systems
‘ specified. The report will be sent via plain text email to a specified
‘ recipient address (see last line in file).

‘ This sample can be used in a production environment to set up an
‘ unattended disk utilization report system.

‘ Modified from the original by Adiscon at http://www.adiscon.com/

‘ Modified by Burnsie

‘ Constants for drive types
Const Unknown = 0
Const Removable = 1
Const Fixed = 2
Const Remote = 3
Const CDROM = 4
Const RAMDisk = 5

‘ general constants – NEED TO BE MODIFIED FOR YOUR ENVIRONMENT
Const MailServer = “smtp.mydomain.com” ‘ Mail Server to use (SMTP)
Const MailServerPort = “25″ ‘ SMTP Port used at Mail server (25 is default)

Const LOCAL_HARD_DISK = 3

‘ Send a mail message
Sub SendMail(Sender, Recipient, Subject, Message)
Set objMessage = CreateObject(“CDO.Message”)
objMessage.Subject = Subject
objMessage.From = Sender
objMessage.To = Recipient
objMessage.TextBody = Message

objMessage.Configuration.Fields.Item _
(“http://schemas.microsoft.com/cdo/configuration/sendusing”) = 2

‘Name or IP of Remote SMTP Server
objMessage.Configuration.Fields.Item _
(“http://schemas.microsoft.com/cdo/configuration/smtpserver”) = MailServer

‘Server port (typically 25)
objMessage.Configuration.Fields.Item _
(“http://schemas.microsoft.com/cdo/configuration/smtpserverport”) = MailServerPort

objMessage.Configuration.Fields.Update

objMessage.Send
End Sub

‘ get current computer name (from system environment variables)
Function GetCurrentComputerName
set oWsh = WScript.CreateObject(“WScript.Shell”)
set oWshSysEnv = oWsh.Environment(“PROCESS”)
GetCurrentComputerName = oWshSysEnv(“COMPUTERNAME”)
End Function

‘==================================================================
‘ Begin main code
‘==================================================================
str = “”

‘Only enumerate physical disks (Not Network Drives)
Const HARD_DISK = 3

‘====================================================================
‘ Server Server1
‘===================================================================
strComputer = “Server1″
Set objWMIService = GetObject(“winmgmts:” _
& “{impersonationLevel=impersonate}!\\” & strComputer & “\root\cimv2″)

Set colDisks = objWMIService.ExecQuery _
(“Select * from Win32_LogicalDisk Where DriveType = ” & HARD_DISK & “”)

str = str & “Server: ” & strComputer & vbcrlf
For Each objDisk in colDisks
str = str & “Disk: “& objDisk.DeviceID & vbTab
str = str & ” Free Disk Space: “& FormatNumber(CLng(objDisk.FreeSpace / 1024 / 1024),0,,,-1) & ” MB” & vbcrlf
Next

str = str & vbcrlf

‘=============================================================
‘ Server server2
‘============================================================
strComputer = “server2″
Set objWMIService = GetObject(“winmgmts:” _
& “{impersonationLevel=impersonate}!\\” & strComputer & “\root\cimv2″)

Set colDisks = objWMIService.ExecQuery _
(“Select * from Win32_LogicalDisk Where DriveType = ” & HARD_DISK & “”)

str = str & “Server: ” & strComputer & vbcrlf
For Each objDisk in colDisks
str = str & “Disk: “& objDisk.DeviceID & vbTab
str = str & ” Free Disk Space: “& FormatNumber(CLng(objDisk.FreeSpace / 1024 / 1024),0,,,-1) & ” MB” & vbcrlf
Next

str = str & vbcrlf

‘================================================================
‘ Server server3
‘================================================================
strComputer = “server3″
Set objWMIService = GetObject(“winmgmts:” _
& “{impersonationLevel=impersonate}!\\” & strComputer & “\root\cimv2″)

Set colDisks = objWMIService.ExecQuery _
(“Select * from Win32_LogicalDisk Where DriveType = ” & HARD_DISK & “”)

str = str & “Server: ” & strComputer & vbcrlf
For Each objDisk in colDisks
str = str & “Disk: “& objDisk.DeviceID & vbTab
str = str & ” Free Disk Space: “& FormatNumber(CLng(objDisk.FreeSpace / 1024 / 1024),0,,,-1) & ” MB” & vbcrlf
Next

str = str & vbcrlf

‘============================================================
‘ Server server4
‘============================================================
strComputer = “server4″
Set objWMIService = GetObject(“winmgmts:” _
& “{impersonationLevel=impersonate}!\\” & strComputer & “\root\cimv2″)

Set colDisks = objWMIService.ExecQuery _
(“Select * from Win32_LogicalDisk Where DriveType = ” & HARD_DISK & “”)

str = str & “Server: ” & strComputer & vbcrlf
For Each objDisk in colDisks
str = str & “Disk: “& objDisk.DeviceID & vbTab
str = str & ” Free Disk Space: “& FormatNumber(CLng(objDisk.FreeSpace / 1024 / 1024),0,,,-1) & ” MB” & vbcrlf
Next

str = str & vbcrlf & vbcrlf & “Disk Space script hacked together by Burnsie and his good friend Google”

‘Send the email
SendMail “administrator@mydomain.com.au”, “support@mydomain.com.au”, “Client Name ” & strComputerName & “: Drive Space Report”, str

This code sends an email to the specified address that looks like this:

SUBJECT:Client Name: Drive Space Report
BODY:
Server: server11
Disk: C: Free Disk Space: 10,219 MB
Disk: D: Free Disk Space: 39,387 MB

Server: server2
Disk: C: Free Disk Space: 1,920 MB
Disk: D: Free Disk Space: 9,875 MB
Disk: F: Free Disk Space: 17,207 MB
Disk: M: Free Disk Space: 9,875 MB

Server: server3
Disk: C: Free Disk Space: 8,857 MB
Disk: D: Free Disk Space: 6,320 MB
Disk: E: Free Disk Space: 28,497 MB
Disk: F: Free Disk Space: 16,437 MB

Server: server4
Disk: C: Free Disk Space: 35,073 MB
Disk: E: Free Disk Space: 731 MB

Disk Space script hacked together by Burnsie and his good friend Google

No related posts.

Have a computer problem? Ask in our SUPPORT forum!

Receive Discounted Software

No bull. Want cheap discounts for common software products?
  • AntiVirus
  • Video editing tools
  • Web development tools
  • Registry Cleaners
  • Computer speed boosters!
Our editors get these products sent to us WEEKLY for review.

WE WANT TO PASS THESE DISCOUNTS ON TO YOU! (We honestly don't need them)

So whack your email in the box below and when we receive stuff we'll forward it to you! Its that simple.


3 Responses to “VB Script to check disk space and email results”

  1. Jamsi says:

    Impressive Burnsie! :)

  2. Kostoprav says:

    Super script. Thanks very much!

  3. Robert says:

    Very nice script, thanks for sharing

Leave a Reply