On Error Resume Next
fnCreateClass()
MaxTime = fnGetMaxTime()
Set objLocator = CreateObject("wbemscripting.swbemlocator")
Set objServices = objLocator.ConnectServer(,"root\cimv2")
objServices.Security_.Privileges.AddAsString "SeSecurityPrivilege"
Set objWhiteSpace = GetObject("Winmgmts:root\CIMV2:WhiteSpace").SpawnInstance_
Set colLoggedEvents = objServices.ExecQuery ("Select * from Win32_NTLogEvent where Logfile = 'Application' and " & _
"EventCode = '1221' and ComputerName is not null and TimeWritten > '" & MaxTime &"'")
For Each objEvent in colLoggedEvents
wscript.echo objEvent.Message
Database = Split(objEvent.Message,"""")(1)
Server = Split(Split(Database,"(")(1),")")(0)
SG = "SG" & Split(Split(Database,"Storage Group ")(1),"\")(0)
Store = Split(Split(Database,"Mailbox Store ")(1)," ")(0)
Label = Server & " " & SG & " Store" & Store
FreeSpace = Split(Split(objEvent.Message,"has ")(1)," megabytes")(0)
objWhiteSpace.ComputerName = objEvent.ComputerName
objWhiteSpace.Message = objEvent.Message
objWhiteSpace.TimeWritten = objEvent.TimeWritten
objWhiteSpace.Database = Database
objWhiteSpace.Label = Label
objWhiteSpace.FreeSpace = FreeSpace
Set objInstancePath = objWhiteSpace.Put_
Next
Set objLocator = Nothing
Set objServices = Nothing
Set objWhiteSpace = Nothing
Set colLoggedEvents = Nothing
Set objInstancePath = Nothing
Function fnCreateClass()
wbemCimtypeSint16 = 2 'Signed 16-bit integer
wbemCimtypeSint32 = 3 'Signed 32-bit integer
wbemCimtypeReal32 = 4 '32-bit real number
wbemCimtypeReal64 = 5 '64-bit real number
wbemCimtypeString = 8 'String
wbemCimtypeBoolean = 11 'Boolean value
wbemCimtypeObject = 13 'CIM object
wbemCimtypeSint8 = 16 'Signed 8-bit integer
wbemCimtypeUint8 = 17 'Unsigned 8-bit integer
wbemCimtypeUint16 = 18 'Unsigned 16-bit integer
wbemCimtypeUint32 = 19 'Unsigned 32-bit integer
wbemCimtypeSint64 = 20 'Signed 64-bit integer
wbemCimtypeUint64 = 21 'Unsigned 64-bit integer
wbemCimtypeDatetime = 101 'Date/time value
wbemCimtypeReference = 102 'Reference to a CIM object
wbemCimtypeChar16 = 103 '16-bit character
Set objSWbemService = GetObject("Winmgmts:root\CIMV2")
Set objClass = objSWbemService.Get()
objClass.Path_.Class = "WhiteSpace"
If objClass.Properties_.Count <> 6 Then
objClass.Properties_.Add "ComputerName", wbemCimtypeString
objClass.Properties_.Add "Message", wbemCimtypeString
objClass.Properties_.Add "TimeWritten", wbemCimtypeDatetime
objClass.Properties_.Add "Database", wbemCimtypeString
objClass.Properties_.Add "Label", wbemCimtypeString
objClass.Properties_.Add "Freespace", wbemCimtypeSint32
objClass.Properties_("Database").Qualifiers_.Add "key", True
End If
' Write the new class to the root\CIMV2 namespace in the repository
Set objClassPath = objClass.Put_
' wscript.echo objClassPath.Path
' Release SwbemServices object
Set objSWbemService = Nothing
End Function
Function fnDeleteClass()
Set objSWbemService = GetObject("Winmgmts:root\CIMV2")
' Remove the new class and instance from the repository
objSWbemService.Delete("WhiteSpace")
If Err <> 0 Then
WScript.Echo Err.Number & " " & Err.Description
Else
WScript.Echo "Delete succeeded"
End If
' Release SwbemServices object
Set objSWbemService = Nothing
End Function
Function fnGetMaxTime()
On Error Resume Next
Set objLocator = CreateObject("wbemscripting.swbemlocator")
Set objServices = objLocator.ConnectServer(,"root\CIMV2")
Set dateTime = CreateObject("WbemScripting.SWbemDateTime")
dateTime.SetVarDate (CDate(DateAdd("d",-1,Date)))
MaxTimeWritten = dateTime
Set existing = objServices.ExecQuery("Select TimeWritten from WhiteSpace")
For Each inst In Existing
If MaxTimeWritten < inst.TimeWritten Then
MaxTimeWritten = inst.TimeWritten
End If
Next
fnGetMaxTime = MaxTimeWritten
End Function