I have a script that was working just fine untill the last patch cycle and now it does not work. Gets access denied errors when trying to access the WMI on the remote machine.
Dave
Patches applied to DC and Exchange servers were
947864, IE Update
948590, GDI
948881, KillBits
941693, Windows Kernal
944338, Vbscript Jscript Remote Exploit
945553, DNS
Here is the code that was working just fine until this week.
Option Explicit
On Error Resume Next
Dim ServerList ' List of computers to check
Dim server ' Current computer to check
Dim fso ' File System Object
Dim strWinMgmts ' Connection string for WMI
Dim objWMIExchange ' Exchange Namespace WMI object
Dim listExchange_Mailboxs ' ExchangeLogons collection
Dim objExchange_Mailbox ' A single ExchangeLogon WMI object
Dim logfile ' Output file
Const cWMINameSpace = "root/MicrosoftExchangeV2"
Const cWMIInstance = "Exchange_Mailbox"
Const LOG_FILE = "EMailSize.csv"
'--------------------------------------
' Set up the array of email servers
'--------------------------------------
ServerList = Array("ExchangeClusterNode1.MyDomain","ExchangeClusterNode2.MyDomain")
'--------------------------------------
' Set up log file
'--------------------------------------
set fso = CreateObject("Scripting.FileSystemObject")
Set logfile = fso.CreateTextFile(LOG_FILE)
logfile.WriteLine("""Display Name"",""Mailbox Size (KB)"",""Mailbox TotalItems"",""DateDiscoveredAbsentInDS"", _
""LegacyDN"",""Mailbox StoreName"",""Mailbox ServerName""")
' Create the object string, indicating WMI (winmgmts), using the
' current user credentials (impersonationLevel=impersonate),
' on the computer specified in the constant cComputerName, and
' using the CIM namespace for the Exchange provider.
WScript.Echo "Starting now"
'The rest of the script will fetch mailbox sizes for our servers. Mailbox sizes are in Kilobytes.
For Each server in ServerList
WScript.Echo "Starting " & server & " search."
strWinMgmts = "winmgmts:{impersonationLevel=impersonate}!//" & server & "/" & cWMINameSpace
'WScript.Echo strWinMgmts
Set objWMIExchange = GetObject(strWinMgmts)
' Verify we were able to correctly set the object.
If Err.Number <> 0 Then
WScript.Echo "ERROR: Unable to connect to the WMI namespace."
Else
'The Resources that currently exist appear as a list of
'Exchange_Mailbox instances in the Exchange namespace.
Set listExchange_Mailboxs = objWMIExchange.InstancesOf(cWMIInstance)
' Were any Exchange_Mailbox Instances returned?
If (listExchange_Mailboxs.count > 0) Then
' If yes, do the following:
' Iterate through the list of Exchange_Mailbox objects.
For Each objExchange_Mailbox in listExchange_Mailboxs
' Display the value of the Size property.
logfile.WriteLine("""" & objExchange_Mailbox.MailboxDisplayName & """,""" _
& objExchange_Mailbox.Size & """,""" & objExchange_Mailbox.TotalItems & """,""" _
& objExchange_Mailbox.DateDiscoveredAbsentInDS & """,""" & objExchange_Mailbox.LegacyDN _
& """,""" & objExchange_Mailbox.StoreName & """,""" & objExchange_Mailbox.ServerName & """")
Next
Else
' If no Exchange_Mailbox instances were returned, display that.
WScript.Echo "WARNING: No Exchange_Mailbox instances were returned."
End If
End If
Next
Wscript.Echo "Completed"