Yep.

This script runs on the Exchange servers every day to keep the WhiteSpace class information up-to-date and is also collected daily via hardware inventory.

 Code:
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


Please forgive the vbscript.