Windows Management

 Introduction

 Scripts Collection (1)
 Scripts Collection (2)
 Windows Scripting
 Host (WSH)


 WMI

 ADSI

 Windows 2000
 Resource Kit


 Miscellaneous


ActiveXperts
Network Monitor


 Product Overview

 Built-in checks:
 
 Brochure (.pdf file)

 Whitepaper (.pdf)

 Manual (.pdf file)

 Presentation (.ppt)

 Download (.exe file)


Some quotes

 
 Windows&.NET Magazine:
 "Small, smart and very
 very handy"

 
 MonitorTools.com Review:
 "Extremely easy to use,
 great value for money!"


  Download ActiveXperts Network Monitor 7.0  (6239 KB - .exe file)
  Download Manual  (653 KB - .pdf file)

WMI Samples - Exchange

ActiveXperts Network Monitor is an advanced and easy tool for monitoring LAN and WAN networks, network servers, workstations and TCP/IP devices. It has a large set of built-in checks, and you can add new checks by writing scripts. You can use VBScript (Windows) or RSH (UNIX) for it. VBScript checks can use WMI and ADSI. WMI is an interface to a broad range of properties of a computer/OS/application. With ADSI, you can monitor Directory Services.

Use the samples below to get used to various WMI classes, and use these classes in your own, custom ActiveXperts Network Monitor check.
Each sample below can also be copied to a new file and then run from the command prompt (CSCRIPT.EXE <file>.vbs).


MSExchangeAL Performance Counter
MSExchangeIS Performance Counter
MSExchangeISMailbox Performance Counter




MSExchangeAL Performance Counter


The Recipient Update Service (RUS) plays a crucial role in the day-to-day operations of Exchange 2000 because it is responsible for keeping e-mail addresses and membership of address lists up to date. You should measure the Address List Queue Length when examining the RUS:
  • Address List Queue Length - shows the load the Recipient Update Service is under. If this value is consistently high compared to your baseline, you should seriously consider upgrading the server that has this role, or transferring the role from a weak or overloaded server to a more powerful one.

On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_PerfRawData_MSExchangeAL_MSExchangeAL",,48)
For Each objItem in colItems
    Wscript.Echo "ActiveAddressListThreads: " & objItem.ActiveAddressListThreads
    Wscript.Echo "ActiveRecipientThreads: " & objItem.ActiveRecipientThreads
    Wscript.Echo "AddressListModifications: " & objItem.AddressListModifications
    Wscript.Echo "AddressListsQueueLength: " & objItem.AddressListsQueueLength
    Wscript.Echo "Caption: " & objItem.Caption
    Wscript.Echo "Description: " & objItem.Description
    Wscript.Echo "Frequency_Object: " & objItem.Frequency_Object
    Wscript.Echo "Frequency_PerfTime: " & objItem.Frequency_PerfTime
    Wscript.Echo "Frequency_Sys100NS: " & objItem.Frequency_Sys100NS
    Wscript.Echo "LDAPModifycalls: " & objItem.LDAPModifycalls
    Wscript.Echo "LDAPModifycallsPersec: " & objItem.LDAPModifycallsPersec
    Wscript.Echo "LDAPModifyfailures: " & objItem.LDAPModifyfailures
    Wscript.Echo "LDAPModifyfailuresPersec: " & objItem.LDAPModifyfailuresPersec
    Wscript.Echo "LDAPResults: " & objItem.LDAPResults
    Wscript.Echo "LDAPResultsPersec: " & objItem.LDAPResultsPersec
    Wscript.Echo "LDAPSearchcalls: " & objItem.LDAPSearchcalls
    Wscript.Echo "LDAPSearchcallsPersec: " & objItem.LDAPSearchcallsPersec
    Wscript.Echo "Name: " & objItem.Name
    Wscript.Echo "RecipientModifications: " & objItem.RecipientModifications
    Wscript.Echo "RecipientsPersec: " & objItem.RecipientsPersec
    Wscript.Echo "RecipientsQueueLength: " & objItem.RecipientsQueueLength
    Wscript.Echo "Timestamp_Object: " & objItem.Timestamp_Object
    Wscript.Echo "Timestamp_PerfTime: " & objItem.Timestamp_PerfTime
    Wscript.Echo "Timestamp_Sys100NS: " & objItem.Timestamp_Sys100NS
Next

MSExchangeIS Performance Counter


For this object, monitor the following counters:
  • User Count – This displays the number of people currently using the Information Store (not the number of connections). It is impossible to properly judge the performance of a server running Exchange unless you know how many people are using it.
  • RPC Requests – This shows the number of client requests currently being processed by the store. You should expect this figure to be fairly small, typically below 25. If it is consistently higher than this, your server is overloaded.

On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_PerfRawData_MSExchangeIS_MSExchangeIS",,48)
For Each objItem in colItems
    Wscript.Echo "ActiveAnonymousUserCount: " & objItem.ActiveAnonymousUserCount
    Wscript.Echo "ActiveConnectionCount: " & objItem.ActiveConnectionCount
    Wscript.Echo "ActiveUserCount: " & objItem.ActiveUserCount
    Wscript.Echo "AnonymousUserCount: " & objItem.AnonymousUserCount
    Wscript.Echo "AppointmentInstanceCreationRate: " & objItem.AppointmentInstanceCreationRate
    Wscript.Echo "AppointmentInstanceDeletionRate: " & objItem.AppointmentInstanceDeletionRate
    Wscript.Echo "AppointmentInstancesCreated: " & objItem.AppointmentInstancesCreated
    Wscript.Echo "AppointmentInstancesDeleted: " & objItem.AppointmentInstancesDeleted
    Wscript.Echo "Caption: " & objItem.Caption
    Wscript.Echo "ConnectionCount: " & objItem.ConnectionCount
    Wscript.Echo "DatabaseSessionHitRate: " & objItem.DatabaseSessionHitRate
    Wscript.Echo "DatabaseSessionHitRate_Base: " & objItem.DatabaseSessionHitRate_Base
    Wscript.Echo "Description: " & objItem.Description
    Wscript.Echo "FBPublishCount: " & objItem.FBPublishCount
    Wscript.Echo "FBPublishRate: " & objItem.FBPublishRate
    Wscript.Echo "Frequency_Object: " & objItem.Frequency_Object
    Wscript.Echo "Frequency_PerfTime: " & objItem.Frequency_PerfTime
    Wscript.Echo "Frequency_Sys100NS: " & objItem.Frequency_Sys100NS
    Wscript.Echo "MaximumAnonymousUsers: " & objItem.MaximumAnonymousUsers
    Wscript.Echo "MaximumConnections: " & objItem.MaximumConnections
    Wscript.Echo "MaximumUsers: " & objItem.MaximumUsers
    Wscript.Echo "Name: " & objItem.Name
    Wscript.Echo "PeakPushNotificationsCacheSize: " & objItem.PeakPushNotificationsCacheSize
    Wscript.Echo "PushNotificationsCacheSize: " & objItem.PushNotificationsCacheSize
    Wscript.Echo "PushNotificationsGeneratedPersec: " & objItem.PushNotificationsGeneratedPersec
    Wscript.Echo "PushNotificationsSkippedPersec: " & objItem.PushNotificationsSkippedPersec
    Wscript.Echo "ReadBytesRPCClientsPersec: " & objItem.ReadBytesRPCClientsPersec
    Wscript.Echo "RecurringAppointmentDeletionRate: " & objItem.RecurringAppointmentDeletionRate
    Wscript.Echo "RecurringAppointmentModificationRate: " & objItem.RecurringAppointmentModificationRate
    Wscript.Echo "RecurringAppointmentsCreated: " & objItem.RecurringAppointmentsCreated
    Wscript.Echo "RecurringAppointmentsDeleted: " & objItem.RecurringAppointmentsDeleted
    Wscript.Echo "RecurringAppointmentsModified: " & objItem.RecurringAppointmentsModified
    Wscript.Echo "RecurringApppointmentCreationRate: " & objItem.RecurringApppointmentCreationRate
    Wscript.Echo "RecurringMasterAppointmentsExpanded: " & objItem.RecurringMasterAppointmentsExpanded
    Wscript.Echo "RecurringMasterExpansionRate: " & objItem.RecurringMasterExpansionRate
    Wscript.Echo "RPCOperationsPersec: " & objItem.RPCOperationsPersec
    Wscript.Echo "RPCPacketsPersec: " & objItem.RPCPacketsPersec
    Wscript.Echo "RPCRequests: " & objItem.RPCRequests
    Wscript.Echo "RPCRequestsPeak: " & objItem.RPCRequestsPeak
    Wscript.Echo "SingleAppointmentCreationRate: " & objItem.SingleAppointmentCreationRate
    Wscript.Echo "SingleAppointmentDeletionRate: " & objItem.SingleAppointmentDeletionRate
    Wscript.Echo "SingleAppointmentModificationRate: " & objItem.SingleAppointmentModificationRate
    Wscript.Echo "SingleAppointmentsCreated: " & objItem.SingleAppointmentsCreated
    Wscript.Echo "SingleAppointmentsDeleted: " & objItem.SingleAppointmentsDeleted
    Wscript.Echo "SingleAppointmentsModified: " & objItem.SingleAppointmentsModified
    Wscript.Echo "Timestamp_Object: " & objItem.Timestamp_Object
    Wscript.Echo "Timestamp_PerfTime: " & objItem.Timestamp_PerfTime
    Wscript.Echo "Timestamp_Sys100NS: " & objItem.Timestamp_Sys100NS
    Wscript.Echo "UserCount: " & objItem.UserCount
    Wscript.Echo "WriteBytesRPCClientsPersec: " & objItem.WriteBytesRPCClientsPersec
Next

MSExchangeISMailbox Performance Counter


MSExchangeIS Mailboxes and Public Folders:
  • Send Queue Size – This shows the queue of messages outbound from the Information Store. In situations where the SMTP service is down or there is a reduction in performance, you will see a nonzero value for this queue. On large busy systems (2000 users or more) you may never see this value at zero, but on smaller ones (500 or so medium users) you would not expect to see nonzero values for any significant period of time.
  • Messages Sent/Min – This shows the rate at which messages are sent to the transport. This figure being low is not a problem in itself, but if the Send Queue Size is nonzero and the value is still low compared to your baseline, then there are performance issues that need to be resolved (you will only be able to tell what these are by monitoring other Exchange 2000 Server and Windows 2000 counters);
  • Received Queue Size – This shows the queue of messages inbound to the Information Store. Unlike the Send Queue size, this is often nonzero, except on a bridgehead server with no local mailboxes. However, if the value is consistently high compared to your baseline, it could indicate a problem;
  • Messages Received/Min – Again a low value here could simply indicate a quiet server; however if the Receive Queue Size value is high and this value is low, it indicates that you are receiving messages that are stacking up and are not being processed.

On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_PerfRawData_MSExchangeIS_MSExchangeISMailbox",,48)
For Each objItem in colItems
    Wscript.Echo "ActiveClientLogons: " & objItem.ActiveClientLogons
    Wscript.Echo "AverageDeliveryTime: " & objItem.AverageDeliveryTime
    Wscript.Echo "AverageLocalDeliveryTime: " & objItem.AverageLocalDeliveryTime
    Wscript.Echo "Caption: " & objItem.Caption
    Wscript.Echo "CategorizationCount: " & objItem.CategorizationCount
    Wscript.Echo "ClientLogons: " & objItem.ClientLogons
    Wscript.Echo "Description: " & objItem.Description
    Wscript.Echo "FolderOpensPersec: " & objItem.FolderOpensPersec
    Wscript.Echo "Frequency_Object: " & objItem.Frequency_Object
    Wscript.Echo "Frequency_PerfTime: " & objItem.Frequency_PerfTime
    Wscript.Echo "Frequency_Sys100NS: " & objItem.Frequency_Sys100NS
    Wscript.Echo "HTTPPerDAVCurrentPendingNotifications: " & objItem.HTTPPerDAVCurrentPendingNotifications
    Wscript.Echo "HTTPPerDAVCurrentSubscriptions: " & objItem.HTTPPerDAVCurrentSubscriptions
    Wscript.Echo "HTTPPerDAVCurrentTransactionLocks: " & objItem.HTTPPerDAVCurrentTransactionLocks
    Wscript.Echo "HTTPPerDAVNotifyRequestsPersec: " & objItem.HTTPPerDAVNotifyRequestsPersec
    Wscript.Echo "HTTPPerDAVTotalLocksCreated: " & objItem.HTTPPerDAVTotalLocksCreated
    Wscript.Echo "HTTPPerDAVTotalNotifyRequests: " & objItem.HTTPPerDAVTotalNotifyRequests
    Wscript.Echo "HTTPPerDAVTotalSubscriptionsCreated: " & objItem.HTTPPerDAVTotalSubscriptionsCreated
    Wscript.Echo "HTTPPerDAVTotalSubscriptionsExpired: " & objItem.HTTPPerDAVTotalSubscriptionsExpired
    Wscript.Echo "Localdeliveries: " & objItem.Localdeliveries
    Wscript.Echo "Localdeliveryrate: " & objItem.Localdeliveryrate
    Wscript.Echo "MessageOpensPersec: " & objItem.MessageOpensPersec
    Wscript.Echo "MessageRecipientsDelivered: " & objItem.MessageRecipientsDelivered
    Wscript.Echo "MessageRecipientsDeliveredPermin: " & objItem.MessageRecipientsDeliveredPermin
    Wscript.Echo "MessagesDelivered: " & objItem.MessagesDelivered
    Wscript.Echo "MessagesDeliveredPermin: " & objItem.MessagesDeliveredPermin
    Wscript.Echo "MessagesSent: " & objItem.MessagesSent
    Wscript.Echo "MessagesSentPermin: " & objItem.MessagesSentPermin
    Wscript.Echo "MessagesSubmitted: " & objItem.MessagesSubmitted
    Wscript.Echo "MessagesSubmittedPermin: " & objItem.MessagesSubmittedPermin
    Wscript.Echo "Name: " & objItem.Name
    Wscript.Echo "PeakClientLogons: " & objItem.PeakClientLogons
    Wscript.Echo "ReceiveQueueSize: " & objItem.ReceiveQueueSize
    Wscript.Echo "SendQueueSize: " & objItem.SendQueueSize
    Wscript.Echo "SingleInstanceRatio: " & objItem.SingleInstanceRatio
    Wscript.Echo "SingleInstanceRatio_Base: " & objItem.SingleInstanceRatio_Base
    Wscript.Echo "Timestamp_Object: " & objItem.Timestamp_Object
    Wscript.Echo "Timestamp_PerfTime: " & objItem.Timestamp_PerfTime
    Wscript.Echo "Timestamp_Sys100NS: " & objItem.Timestamp_Sys100NS
    Wscript.Echo "TotalCountofRecoverableItems: " & objItem.TotalCountofRecoverableItems
    Wscript.Echo "TotalSizeofRecoverableItems: " & objItem.TotalSizeofRecoverableItems
Next

Copyright ©1999-2007 ActiveXperts Software. All rights reserved.