VB Script to check disk space and email results
By Burnsie • Nov 28th, 2007 • Category: Windows 2K3 ServerHere 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 = MessageobjMessage.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”) = MailServerPortobjMessage.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
Nextstr = 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
Nextstr = 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
Nextstr = 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
Nextstr = 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 MBServer: 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 MBServer: 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 MBServer: server4
Disk: C: Free Disk Space: 35,073 MB
Disk: E: Free Disk Space: 731 MBDisk Space script hacked together by Burnsie and his good friend Google
Related posts:
FREE NEWSLETTER -> Want Tech Tips Sent Straight to your Inbox?
Grab our Newsletter to Ensure your PC is Running Smooth!
Burnsie is currently working as a Wintel Messaging Engineer for a large commercial bank specialising in Microsoft Exchange and Blackberry administration for 1000+ users.
Email this author | All posts by Burnsie
























Impressive Burnsie!