On Error Resume Next
'Twitter setup
sUrl = "http://twitter.com/statuses/update.xml"
sUsername = "Your Email Address"
sPassword = "Your Twitter Password"

'Monitor Limits
diskFreeSpace=1200000000
freeRAM=100000
freePaging=100000
'Specify the time to wait before repeating in milliseconds
sleepTime=300000

'Post to twitter fucntion
Function HTTPPost(sUrl, sRequest, sUsername, sPassword) 
  set oHTTP = CreateObject("Microsoft.XMLHTTP") 
  oHTTP.open "POST", sUrl,false,sUsername,sPassword
  oHTTP.send sMessage 
  HTTPPost = oHTTP.responseText 
 'WScript.Echo HTTPPost 
End Function

'Establish Connection with WMI
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" _
    & strComputer & "\root\cimv2")

'Monitoring Loop
While (True)

	'Reset Monitor Status
	sMessage="status=System Normal"

	'***---Free Drive Space Check---***
	Set colDisks = objWMIService.ExecQuery _
		("Select * from Win32_LogicalDisk where DeviceID='C:'")
	For Each objDisk in colDisks
		If objDisk.FreeSpace < diskFreeSpace Then
			sMessages="status=" & "The C: has less than 1 Gig left"
			'Wscript.Echo sMessage
			HTTPPost sUrl, sMessage, sUsername, sPassword
		End if
	Next

	'***---Running Services Check---***
	Set colItems = objWMIService.ExecQuery( _
	   "SELECT * FROM Win32_Service where State!='Running' and (Name='Apache2' or Name='APC UPS Service'" _
		& " or Name='DNS' or Name='IISADMIN' or Name='MSExchangeIS' or Name='MSExchangeMGMT'" _
		& " or Name='MSExchangeMTA' or Name='MSExchangeSA' or Name='MSSQLSERVER' or Name='MySQL'" _
		& " or Name='NoIPDUCService'or Name='SQLBrowser' or Name='SQLSERVERAGENT' or Name='SQLWriter'" _
		& " or Name='TermService' or Name='VMTools' or Name='W3SVC')",,48) 
	colCount=0
	stMessage="Services: "
	For Each objItem in colItems 
		stMessage = stMessage & " " & objItem.Name & ","
		colCount=colCount+1
	Next
	If colCount>0 Then
		sMessage="status=" & stMessage & " Have Stopped"
		'Wscript.Echo sMessage
		HTTPPost sUrl, sMessage, sUsername, sPassword
	End if

	'***---Free RAM/Page File Check---***
	Set colSettings = objWMIService.ExecQuery _
	   ("Select * from Win32_OperatingSystem")
	stMessage="status=Server Running Low on:"
	For Each objOperatingSystem in colSettings 
		If objOperatingSystem.FreePhysicalMemory<freeRAM Then
			stMessage=stMessage & " RAM,"
			'Wscript.Echo sMessage
		End If
		if objOperatingSystem.FreeSpaceInPagingFiles<freePaging Then
			stMessage=stMessage & " Swap,"
			'Wscript.Echo sMessage
		End	If
		If stMessage="status=Server Running Low on:" Then
		Else
			sMessage=stMessage
			HTTPPost sUrl, sMessage, sUsername, sPassword
		End if
	Next
	'If no errors reset to system normal. (Twitter ignores updates that are the same as the current status)
	If sMessage="status=System Normal" Then
		HTTPPost sUrl, sMessage, sUsername, sPassword
	End if
	Wscript.Sleep sleepTime
Wend
