Exchange Server Monitoring Event Logs Status Report in Daily Email Notification
Summary
The Get-EventLog cmdlet is not specific to Exchange Server, but we can use it to gather information about Exchange Server from the event logs. For example, to return the 10 most recent event log entries that have a source of MSExchange Common. In mission critical applications environment most of the time we want to see whats happening in Event Logs. In this article we will schedule a task to see the 10 most recent Events log entries in administrator mailbox so that in case of any error or something goes wrong admins can immediately take action to fix the errors.
Steps
We need to create two files and keep them somewhere in your Exchange drives my docs, download or C:\ drive etc where you have full permission to run these file in-case if you have used delegated account for Exchange installation. File names with extension are as below:-
ExchangeServerLast10EventsLog.bat
ExchangeServerLast10EventsLog.PS1
Creating .bat
File Open the ExchangeDatabaseCopyStatus.bat file and paste the following path which can vary to your environment, or as per your Exchange application installation. Most of the people install Exchange Server in default OS drive C:\
PowerShell.exe -PSConsoleFile "D:\Program Files\Microsoft\Exchange Server\V15\Bin\ExShell.psc1" -Command ". 'C:\Program Files\Update Services\Exchange Bats\Exchange Bats\ExchangeServerLast10EventsLog.PS1'"
You can point to this PowerShell.exe where your Exchange is installed. In this case, it's installed in D:\ so its using that path, the second part of the command is the path of your .PS1 script where you place it.
Creating .PS1 Script
We will open the ExchangeDatabaseCopyStatus.PS1 script in any editor and fill the following information.
$messageParameters = @{
Subject = "Exchange 2013 Last 10 Event Logs Status Report - $((Get-Date).ToShortDateString())"
Body = Get-EventLog –LogName Application –Source “MSExchange Common” –EntryType Error –Newest 10 |
ConvertTo-Html |
Out-String
From = "ExchangeLast10Events@mstechguru.ae"
To = "shakir.hussain@mstechguru.ae"
SmtpServer = "smtp.mstechguru.ae"
}
Send-MailMessage @messageParameters -BodyAsHtml
In the script you can change Subject value, From Value, To Value and SmtpServer value as per your environment. In From value, we can put any dummy email ID which will later appear in Email from the option. So no need to put any valid email address in From. In To option we have to put some valid email address for Exchange Administrator or the Exchange admins teams who are responsible for Exchange Servers in the organization, so They will receive email notification on daily basis and be well aware of Exchange Server's most recent error Event Logs status in Email.
Scheduling a Task in Exchange
Task scheduling steps can follow from the below link:
Scheduling A Task in Exchange Server
Results in Email
When task will trigger you will receive an email having Exchange most recent 10 Event Logs with status.
Conclusions
This will help Exchange administrators to automate tasks and get results in his/her inbox on daily basis. Admin can also have a history of the Error Events status of Exchange Servers in his/her inbox