Phil 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
Pingback: 2014 18
Thanks, fixed!
Hello, Id love to try this out. But your download link points to a dead link
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.
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
Would it be possible to color code fields that come back with Unhealthy? Basically looking to color code anything with warnings or errors?
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.
Counting messages is best done within a monitoring framework like Cacti or Nagios/Icinga with pnp4nagios. That way you get nice realtime graphs.
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!
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
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?
bisha
Colouring ‘critical’ drive free space issues in red will be in the next release
bisha
That’s not a trivial enhancement, but I’ll take a look
How can I mark one of the table rows as red ? for ex, if space < 10% mark that row.
Fixed in
http://www.rebee.clara.net/ExchangePlugins-2.1Beta4.zip
oops, run vcheck.ps1 -config – forgot to strip out my site-specific config
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
Beta3 of Exchange Plugins v2.1
http://www.rebee.clara.net/ExchangePlugins-2.1Beta3.zip
Fixed some more mistakes, added ability to exclude events in event log reporting
Beta2 of Exchange Plugins v2.1
http://www.rebee.clara.net/ExchangePlugins-2.1Beta2.zip
Fixed some obvious mistakes… oops!
@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.
@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!
@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.
@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
@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?
@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”
AdminDisplayVersion is there. But there is no output for .minor or .major, so the result set is null.
@Matteo
What was your fix for DAG info?
And which plugin (exact name) then has a namespace clash?
Any error messages would be helpful.
@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?
@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
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.
@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?
Pingback: vCheck Exchange » Pascal Vis
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.