vCheck Exchange Updated

imagePhil has been doing some fantastic work with the Exchange 2010 version of vCheck, his latest version now even supports Exchange 2007 !

He has also updated most of the plugins with new and exciting data, if you have Exchange and you have not yet tried it make sure you give it a whirl, if you have already been using the previous version make sure you update to this great new version.

Download

To download this version of vCheck you can download the following file which includes the base script and all exchange plugins:

http://www.virtu-al.net/vcheck-pluginsheaders/vcheck/

For more information on the base vCheck script and its framework including a demo of how to use it visit this page.

Plugins

All Exchange Plugins are accessible via the Exchange plugins page located here.

Example Page

An example of the Exchange 2010 report can be viewed by clicking here.

Update Log

New in Exchange Plugins v2.0:

Exchange 2007 support

Report on drives with <= x% free space

MAPI Latency report where latency is above user specified threshold

Active DB not mounted on preferred server report

Various bug fixes and code cleanups

All the plugins have been renumbered into a more logical order

Plus, a bonus plugin to select (via vCheck.ps1 -config) the report header image

Added plugin “20 Exchange 20xx Largest Mailboxes by Total Size”, like 18 and 19,
but sorted by the sum of mailbox and dumpster sizes

————————————————————————————-

00 1st Plugin – Select Report Header Image
Sets report header image
For example, download the Exchange header from
http://www.virtu-al.net/featured-scripts/vcheck/vcheck-headers/
and save as vCheck\Headers\Exchange.png, and this will work out of the box
Falls back to vCheck\Header.jpg if specified header can’t be found

10 Exchange 20xx Load Snapin.ps1
Loads Exchange 2007 / Exchange 2010 powershel snapin

11 Exchange 20xx Basic Server Information.ps1
Basic Exchange server info: OS & Service pack, Exchange version, hotfix rollups,
Exchange Edition and Roles

12 Exchange 20xx Drive Details.ps1
Drive details for each of the Exchange servers.  Can be configured to report only
on drives with less than a specified percentage free space

13 Exchange 2010 Database Availability Groups.ps1
Basic info about your DAG groups – Exchange 2010 only

14 Exchange 20xx DB Statistics.ps1
Database statistics – number of mailboxes, sizes, circular logging, and last
backup dates

15 Exchange 2010 DB Status.ps1
Database status info

16 16 Exchange 2010 Active DB not on Preferred Server .ps1
Reports on databases not mounted on their preferred servers

17 Exchange 20xx MAPI Connectivity.ps1
List MAPI connectivity latencies – can be configured to only report on latencies
above a specified level

18 Exchange 20xx PF Statistics.ps1
Public Folder stats

20 Exchange 20xx Largest Mailboxes.ps1
Report on largest mailboxes by Mailbox size

21 Exchange 20xx Largest Dumpster.ps1
Report on largest mailboxes by Dumpster (deleted items) size

22 Exchange 20xx Largest Total Size.ps1
Report on largest mailboxes by Total size (Mailbox + Dumpster)

For each of the above three reports, you can report on the top n mailboxes by size
either across organisation or per DB, and you can also specify a threshold size to
report on.  For obvious reasons, I wouldn’t advise reporting on all mailboxes without
a non-zero threshold

Plugins for Exchange not up to date or installed.ps1
Report on out of date / missing plugins

Report on Plugins.ps1
Report on which plugins were invoked in current run

33 thoughts on “vCheck Exchange Updated”

  1. Pingback: 2014 18
  2. Is there a way to specify the domain controllers for it to query? I would like to run this from a report server that is joined to a different domain than the Exchange servers.

  3. The script runs great and provides a ton of useful information, but I am getting the following errors.
    An error occurred while enumerating through a collection: The handle is invalid.
    At E:\Scripts\Exchange\vCheck\Plugins\24 Exchange 20xx Event Logs.ps1:51 char:22
    + $warningEvents += <<<< ($eventLog.entries) |
    + CategoryInfo : InvalidOperation: (System.Diagnost…triesEnumerator:EntriesEnumerator) [], RuntimeExcep
    tion
    + FullyQualifiedErrorId : BadEnumeration

  4. Got the reports running and scheduled, so all is well. We do monitor with Nagios as well, I might have to see if I can find a way to combine the two, which would be handy.

  5. Counting messages is best done within a monitoring framework like Cacti or Nagios/Icinga with pnp4nagios. That way you get nice realtime graphs.

  6. Just wanted to say thanks, this is running great!

    Is there a plug-in to count messages at all somehow, or is that a perfmon type of thing? It might be interesting to see # of messages in/out per day to see if load is increasing or average size of mail messages as they go. Probably not the nature of this sort of report, but about the only thing I could think of that I’d want more!

  7. Hi Roger,

    That suggests that the Exchange SnapIn isn’t loading correctly in

    10 Exchange 20xx Load Snapin.ps1

    The code in there is trivial enough to debug easily

  8. The original report V6.15 runs great on my 2010 servers. This most recent version stops running without an error after the ‘List plugins’ I get a report with just the plugins listed as true and no other info is shown. The script completes in about 3-4 seconds.

    An ideas?

  9. Getting this error

    Get-VCheckPlugin : System.Net.WebException: The proxy name could not be resolved: ‘hc-isa.herefordshire.gov.uk’
    at System.Net.WebClient.OpenRead(Uri address)
    at OpenRead(Object , Object[] )
    at System.Management.Automation.DotNetAdapter.AuxiliaryMethodInvoke(Object target, Object[] arguments, MethodInforma
    tion methodInformation, Object[] originalArguments)
    At C:\Users\administrator.CONTOSO\Desktop\Plugins\Plugins for Exchange not up to date or installed.ps1:15 char:34
    + $NotInstalled = Get-vCheckPlugin <<<< -NotInstalled -Proxy $proxy | Where { $_.Category -eq "Exchange2010" } | S
    elect Name, version, Status, Description
    + CategoryInfo : NotSpecified: (:) [Write-Error], WriteErrorException
    + FullyQualifiedErrorId : Microsoft.PowerShell.Commands.WriteErrorException,Get-VCheckPlugin

  10. @Mike

    You might have something there. I never even thought of the possibility of administering Exchange from a 32-bit box. Our admin boxes are 64-bit.

  11. @Phil,

    I was trying to play with that today but people just kept pulling me into things!

    Is it possible that this doesn’t work if you’re running it on a 32-bit machine? In two environments I was running this and it wasn’t working, but I realized that in both I was using my 32-bit admin server. Ran it on the exchange CAS server and no problems!

  12. @Mike,

    That implies that the registry open isn’t working or that there’s a permissions issue on the registry keys. I tend to debug this sort of thing with a bit of copy and paste into an exchange command shell.

    In the meantime, here’s a beta of the next update:

    http://www.rebee.clara.net/ExchangePlugins-2.1Beta1.zip

    I’ve added a few more plugins – check the readme before running.

  13. @Phil,

    AdminDisplayVersion was there, but had no values for .major or .minor. At least that was the case on Friday. Now its working! I must have been mistyping something trying to get out the door on a weekend!!! My apologies.

    The error is still the same. I’ve attached it below. Working backwards, I thought on Friday it was because the admindisplayversion.major was missing that the rest of the script was failing, but obviously thats not the case!

    I’m poking around now to see what I missed!

    8:59:18 AM …Collating Server Details for EXCAS2-PHL
    You cannot call a method on a null-valued expression.
    At C:\vCheckExchange\Plugins\11 Exchange 20xx Basic Server Information.ps1:44 c
    har:74
    + $installedRollUps = $registry.OpenSubKey($rollUpKey).GetSubKeyNames <<<
    < ()
    + CategoryInfo : InvalidOperation: (GetSubKeyNames:String) [], Ru
    ntimeException
    + FullyQualifiedErrorId : InvokeMethodOnNull

    You cannot call a method on a null-valued expression.
    At C:\vCheckExchange\Plugins\11 Exchange 20xx Basic Server Information.ps1:49 c
    har:71
    + $Rollups += ($thisRollUp | %{$registry.OpenSubKey($_).getvalue <<<< (
    'DisplayName')}) + ", "
    + CategoryInfo : InvalidOperation: (getvalue:String) [], RuntimeE
    xception
    + FullyQualifiedErrorId : InvokeMethodOnNull

  14. @Mike

    That’s just strange. How can there not be a value there?

    @Matteo

    Another strange one.

    I’m tempted to think that the Exchange Management Shell install is broken in some strange way. Fully service packed and hotfixed?

  15. @phil

    My fix was the removal of the sorting routine and to call for a format-list, the plugin that were conflicting with was “12 Exchange 20xx Drive Details.ps1”

  16. AdminDisplayVersion is there. But there is no output for .minor or .major, so the result set is null.

  17. @Matteo

    What was your fix for DAG info?

    And which plugin (exact name) then has a namespace clash?

    Any error messages would be helpful.

  18. @Phil it seems that if i fix dag info, the exchange storage plugin will have namespace clash with it so i have removed it. Is there any debug or dump mode i can help you with?

  19. @Mike

    You’re going to have to test from your Exchange Command Shell

    Get-ExchangeServer | fl

    And see if AdminDisplayVersion is there or not in the output.

    Other possibility is to do an explicit select for all the attributes being used…

    On or about line 21:

    Sort Name | select Name, AdminDisplayVersion, Edition, ServerRole

  20. Plugin 11 doesn’t work for me. AdminDisplayVersion.Major doesn’t exist. I tried a 2007 and 2010 environment. Since the output is null effectively nothing happens in that script.

  21. @Matteo

    It was tested against Exchange 2010 SP2 and works fine out of the box for me.

    If you can experiment at the command line to figure what’s happening in your environment and what the fix is, it would be appreciated.

    Do we need to put explicit “Select” pipelines in to collect the attributes we’re interested in?

    Have you modified your default commandlet views at all?

  22. Hello,

    I’d like to report one of the plugins not working on exchange 2010 sp2. Plugin 13 won’t work due to the parameters not being shown if using the default get-databaseavailabilitygroup table view rather than list.

Leave a Reply