Exchange 2010 Health check
Dear all,
if the exchanger 2010 run DAG (two servers). How to mak the health check very day and health check report will be sent by email .
thank you
john
Hi
Maybe you can run exbpa everyday and export it share folder.
You can read this blog.
How to Schedule an Exchange BPA Scan in Exchange Server 2010
If you want to send email, you have to write script for it.
Terence Yu
TechNet Community Support
Similar Messages
-
Exchange 2010 health-checks with encryption and ntlm auth
Hi everybody,
I will be forced to implement extended health-ckecks for Exchange 2010 CAS Servers. So the cisco design guide does not help
Exchange2010 CAS Service needs ntlm auth for many services by default. http://technet.microsoft.com/en-us/library/bb331973.aspx
Now with SP1 also for pop3 and imap4. I have not found any option to use ntlm by default.
The next problem is encryption.
Health-checks with encryption are not integrated in cisco ace 4710 by default.
As an alternative to try a scripted health-check with tcl script is an option but needs more investigation and is timeconsuming.
I watched for other vendors solution, they use e.g. external imported shell scripts with curl (curl -s --ntlm -k -X POST ...) to do a health-check with ntlm. That would be fine at the moment to beat the requirement of extendet health-checks.
But maybe it is only ntlm verion 1, I do not know what happens if it comes to ntlm version 2.
Kerberos authentication is a much bigger problem, but at the moment not a requirement.
Does anybody has some hints or also a tcl script for exchange health-checks ?
Best Regards
AloisHi everybody,
I will be forced to implement extended health-ckecks for Exchange 2010 CAS Servers. So the cisco design guide does not help
Exchange2010 CAS Service needs ntlm auth for many services by default. http://technet.microsoft.com/en-us/library/bb331973.aspx
Now with SP1 also for pop3 and imap4. I have not found any option to use ntlm by default.
The next problem is encryption.
Health-checks with encryption are not integrated in cisco ace 4710 by default.
As an alternative to try a scripted health-check with tcl script is an option but needs more investigation and is timeconsuming.
I watched for other vendors solution, they use e.g. external imported shell scripts with curl (curl -s --ntlm -k -X POST ...) to do a health-check with ntlm. That would be fine at the moment to beat the requirement of extendet health-checks.
But maybe it is only ntlm verion 1, I do not know what happens if it comes to ntlm version 2.
Kerberos authentication is a much bigger problem, but at the moment not a requirement.
Does anybody has some hints or also a tcl script for exchange health-checks ?
Best Regards
Alois -
Powershell script for Exchange Server 2010 health check
People,
Can anyone here please share the Powershell to check the Exchange Server health and functionality after patching and Service Pack update?
I need to test multiple servers in my AD environment.
Thanks
/* Server Support Specialist */Hi,
In Exchange 2010, you can use the Test-ServiceHealth cmdlet to test whether all the Microsoft Windows services that Exchange requires on a server have started.
A related article about this command.
https://technet.microsoft.com/en-us/library/aa998852(v=exchg.150).aspx
You can also use the EXBPA tool to do Exchange server health check. You can look at the blog below.
http://blogs.msdn.com/b/douggowans/archive/2007/06/06/run-your-own-exchange-server-health-check-the-tools.aspx
Hope this is helpful to you.
Best regards,
If you have feedback for TechNet Subscriber Support, contact
[email protected]
Belinda Ma
TechNet Community Support -
DPM 2007/2010 Health Check Tools
Hi there,
I've had a look through the existing forum threads, but am unable to find an answer to my query.
I am looking to find a range of DPM health check tools, or Powershell Scripts, that would help me perform a Health Check on a 2007 environment, with a view to an eventual upgrade path to 2010/2012
I am hoping to avoid analysing each event ID and every backup operation in order to make a report to management.
Many thanks in advance
RoryHi,
This is the only DPM Health Check script available. Here is the link:
https://gallery.technet.microsoft.com/DPM-Health-Check-9628e68f
My Blog | www.buchatech.com | www.systemcenterportal.com
If you found this post helpful, please give it a "Helpful" vote. If it answered your question, remember to mark it as an "Answer". This posting is provided "AS IS" with no warranties and confers no rights! Always test ANY suggestion
in a test environment before implementing! -
Exchnage 2010 Health Check Script Required
Team,
Can Some body Please share the script for below and looking for output to be in HTML.
Exchange Server 2010 Environment.
Exchange Server version, Roles,service pack and rollup level
Usage patterns of the mailboxes (Top 100 Mailbox)
Number of mailboxes per Database
List of mailbox servers hosting copies and number of copies
Number of mailboxes per Exchange Server
Regards
Srinivasa K
Srinivasa KHello Andy
Thanks for your reply , Forgot to mention that I have already checked below report, the problem is the below script will run on whole Exchnage Environment , In our organization we have many domains and we have access only to few of them. It will be good
if I get any other script Individully to check the status, I dont want all the status in single report.
Hope You will be able to help me on this.
http://www.stevieg.org/2011/06/exchange-environment-report/
Regards
Srinivasa K
Srinivasa K -
Exchange 2010 prerequisites check errors
Summary: 6 item(s). 5 succeeded, 1 failed.
Elapsed time: 00:00:33
Configuring Prerequisites
Failed
Error:
The following error was generated when "$error.Clear();
if($RoleInstallWindowsComponents)
# Install any Windows Roles or Features required for the Management Tools role
Install-WindowsComponent -ShortNameForRole "AdminTools" -ADToolsNeeded $RoleADToolsNeeded
" was run: "The system cannot find the file specified".
The system cannot find the file specified
Click here for help... http://technet.microsoft.com/en-US/library/ms.exch.err.default(EXCHG.141).aspx?v=14.1.218.11&e=ms.exch.err.Ex88D115&l=0&cl=cp
Elapsed Time: 00:00:02
Organization Prerequisites
Completed
Elapsed Time: 00:00:13
Languages Prerequisites
Completed
Elapsed Time: 00:00:02
Hub Transport Role Prerequisites
Completed
Warning:
Installing Exchange Server on a domain controller will elevate the privileges for Exchange Trusted Subsystem to domain administrators.
Elapsed Time: 00:00:05
Client Access Role Prerequisites
Completed
Warning:
Installing Exchange Server on a domain controller will elevate the privileges for Exchange Trusted Subsystem to domain administrators.
Elapsed Time: 00:00:04
Mailbox Role Prerequisites
Completed
Warning:
If Microsoft Outlook 2003 is in use, you should replicate the free/busy folder on this server to every other free/busy server in the organization. This step should be performed once Setup completes.
Warning:
Installing Exchange Server on a domain controller will elevate the privileges for Exchange Trusted Subsystem to domain administrators.
Elapsed Time: 00:00:05
Any suggestions. I believe it has something to do with missing AD roles and features.
Server OS: Windows Server 2012 StandardMartina is correct.
And you may also want to re-evaluate installing onto the DC.
http://blogs.technet.com/b/rmilne/archive/2013/07/03/exchange-on-a-dc.aspx
Cheers,
Rhoderick
Microsoft Senior Exchange PFE
Blog:
http://blogs.technet.com/rmilne
Twitter: LinkedIn:
Facebook:
XING:
Note: Posts are provided “AS IS” without warranty of any kind, either expressed or implied, including but not limited to the implied warranties of merchantability and/or fitness for a particular purpose. -
Exchange 2010 SP3 upgrade - Event ID 4999 - Address Book Crash
0
I just upgraded an Exchange 2010 SP1 CAS server to SP3 - since then anytime an outlook client connects to the CAS server, the Address Book service crash's and event 4999 is logged in App log. I can reproduce the issue by attempting to create a new
outlook profile and checking the name against the CAS server. This crash's the service and the client recieves an error message. The contents of event ID 4999 is below. I've tried re-installing the CAS role, re-applying the schema extension
for SP3. I've installed all windows updates, enabled logging but I'm not getting anywhere. If anyone can help with this issue, I would greatly appreicate it.
Watson report about to be sent for process id: 10168, with parameters: E12, c-RTL-AMD64, 14.03.0123.004, M.E.AddressBook.Service, M.Exchange.Rpc, M.E.R.R.RfriRpcOperationBase.Complete, System.ArgumentException, a3e, 14.03.0123.002.
ErrorReportingEnabled: True
That error is followed by a message that the Address Book service has sucessfully startedHello,
For exchange 2010 sp3, there is no article to explain the issue.
I suggest you run EXBPA aganist your exchange server health check.
Cara Chen
TechNet Community Support -
Public folders stuck in Mail queue when replicating to Exchange 2010
This last weekend I installed Exchange 2010. Moved everyone over the same night to the new server. Mail flows in and out in ex 2010. The problem is I can't get the Public folders to replicate across. At the same time I found I can't send mail between the
two exchange servers. In the message Queue on the Ex 2007 box I see the public folders are just sitting there waiting to be sent but stuck. Along with my test emails.
I found an artical that talks about going into ADSIEdit and delete the old exchange 2003 empty server folder. Did that and email is still not flowing.
Servers are in the same AD same subnet. ex 2007 is installed on a 2003 box. ex 2010 is on 2008r2.
Thanks,
SteveHi vasdavidson,
For this issue, I suggest you follow these steps to troubleshoot the problem:
1.
Please paste the exact error you got in queue viewer.
2.
On Exchange 2007, (use telnet) send emails to Exchange 2010, then check whether it can receive email or not.
Thanks,
Evan
Please remember to click “Mark as Answer” on the post that helps you, and to click “Unmark as Answer” if a marked post does not actually answer your question. This can be beneficial to other community members reading the thread. -
New mailbox move request Exchange 2010 : queued
I have deployed new Exchange 2010 server in Exchange 2003 Organization. It is simple setup one Exchange 2003 and New Exchange 2010.
I was trying to move mailbox from Exchange 2003 to 2010 and it has status of QUEUE “indefinetly”.. I have tried several mailboxes and result is the same.
Then I decided to create new database on Exchange 2010 sever. I have crate new mailbox on Exchange 2010 sever, send and receive some emails. And then try to move mailbox to new database. Same results.
I run test MSR replication and is ok.
I have increase msr LOGGING TO Maximum, no errors. I have rebooted server several times, no differences…Hi,
Based on the description, status of mailbox move request from Exchange 2003 to Exchange 2010 is "indefinitely".
Please make sure mailbox databases in Exchange 2010 and Exchange 2003 are mounted.
Have you moved mailbox using the New-MoveRequest with the BadItemLimit and the AcceptLargeDataLoss parameters? If not, it's worth to do it again. Before you create a new move request, please check if there is any previous move request. If there is, please
clear the previous move request and then move the mailbox.
If the issue persists, please try to move mailbox to another database in Exchange 2003 and then move to Exchange 2010 to check the result.
Best regards,
Belinda
Belinda Ma
TechNet Community Support -
Exchange 2003 with Windows Server 2012 DC's only. Migrate to Exchange 2010.
I have the following situation:
An Exchange 2003 SP2 server in an 2003 FFL and DFL domain with 2 Windows Server 2012 DC's. There are no Windows Server 2003 DC's anymore. Exchange 2003 is still functioning properly, but the eventlog is showing me some errors about LDAP which is unable to
find an old 2003 DC.
I know this is not supported, so we want to migrate to Exchange 2010 as soon as possible.
What is the best way to do this? Will coexsitence still work? Do I have to add an 2003 DC's again?
Please advice. Thank's in advance!Oh thank GOD I found this thread!
I am facing a similar situation:
http://social.technet.microsoft.com/Forums/exchange/en-US/9a8bc14b-1a45-4b8b-ac3a-38d63e66a7da/exchange-predeployment-analyzer-exchange-2010-compatibility-check-does-not-recognize-windows?forum=exchangesvrdeploylegacy
And this is the first post I have seen marked as an answer by a Microsoft Contingent Staff affiliated person.
Thanks Steve and Simon, you have saved me a bunch of grey hairs.
C.
"Time is an illusion, Lunchtime, doubly so..." - Ford Prefect -
Exchange 2010 Org Health check telling me I need Enterprise CALs, bug?
My new install of Exchange 2010 Enterprise organizational health check is telling me I also need Enterprise CALs for all of my test users. This does not seem right since I have not enabled any features listed as ecal features at http://www.microsoft.com/exchange/en-us/licensing-exchange-server-email.aspx#Exchange2010CAL
in fact the setup is a very basic one. The test users were migrated from an existing exchange 2007 server but again no enterprise features were enabled there. Is there a way to tell what it thinks I need enterprise CALs for? Is this a bug? I saw a notice that
the RTM version had counted the default exchange active sync policy as an ecal requirement but I figured this would have been fixed by now.looks like it has reared its head in update rollup 8-v2 for sp3. Last year I was playing around with the archive mailbox to see if it was something we may want to implement. At the time our enterprise cal requirements went from 0 to 1 for the test system
I was using. This ended up being something we did not want to pursue at the time so I disabled the option on the account. Happened to run the organizational health link today and now it says that all accounts need enterprise cals. Did not appear to be an issue
in update 7. -
Database redundansy health check failed ( Exchange 2010 sp3 )
Hello all ,
One of the mailbox server have been getting the following error in in application , sometimes
RealCopyQueu is 256 and sometimes 0 and healthy .
Kindly share how can resolve it pleaseHi,
I suggest we refer to the following article to troubleshoot this issue. Run
Database Redundancy Check Script.
http://social.technet.microsoft.com/Forums/exchange/en-US/b1cfbc4b-b17d-4148-adce-1a565d0f5746/exchange-2010-event-id-4113-msexchangerepl-health-check-failed
Regards,
Please remember to mark the replies as answers if they help and unmark them if they provide no help. If you have feedback for TechNet Subscriber Support, contact
[email protected]
Simon Wu
TechNet Community Support -
SCOM health check on Exchange 2010 servers
Hi,
Does SCOM have any built-in function to perform
health check on Exchange 2010 servers?You can check health check of Exchange 2010 by install management pack of Exchange 2010.
Here's management pack of exchange 2010
http://www.microsoft.com/en-us/download/details.aspx?id=692
Before Import management Pack and how to configure it, you can check below link
http://technet.microsoft.com/en-us/library/ee758051%28v=exchg.140%29.aspx
Please remember, if you see a post that helped you please click "Vote As Helpful" and if it answered your question, please click "Mark As Answer" -
Health Check in Exchange 2007 Scripting
Hi All,
I have been looking around for scripts which would help me perform regularised health checks in my enviornment. After lot of googling i was able to get a script which would meet my requirements. However i have a few challenges involved in extracting some
more information:
1. Mailbox Store Size, Free Diskspace percentage for mailbox servers
2. Remote Mail flow Tests & Mailflow test to every exchange 2007 mailbox servers in org.
3. Automating Email of collected data (in HTML) to Administrator.
4. Executing the script Automatically without triggering it from Exchange Management Shell.
Script Below
param( [string] $auditlist)
Function Get-CustomHTML ($Header){
$Report = @"
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
<html><head><title>$($Header)</title>
<META http-equiv=Content-Type content='text/html; charset=windows-1252'>
<meta name="save" content="history">
<style type="text/css">
DIV .expando {DISPLAY: block; FONT-WEIGHT: normal; FONT-SIZE: 8pt; RIGHT: 8px; COLOR: #ffffff; FONT-FAMILY: Arial; POSITION: absolute; TEXT-DECORATION: underline}
TABLE {TABLE-LAYOUT: fixed; FONT-SIZE: 100%; WIDTH: 100%}
*{margin:0}
.dspcont { display:none; BORDER-RIGHT: #B1BABF 1px solid; BORDER-TOP: #B1BABF 1px solid; PADDING-LEFT: 16px; FONT-SIZE: 8pt;MARGIN-BOTTOM: -1px; PADDING-BOTTOM: 5px; MARGIN-LEFT: 0px; BORDER-LEFT: #B1BABF 1px solid; WIDTH: 95%; COLOR: #000000; MARGIN-RIGHT:
0px; PADDING-TOP: 4px; BORDER-BOTTOM: #B1BABF 1px solid; FONT-FAMILY: Tahoma; POSITION: relative; BACKGROUND-COLOR: #f9f9f9}
.filler {BORDER-RIGHT: medium none; BORDER-TOP: medium none; DISPLAY: block; BACKGROUND: none transparent scroll repeat 0% 0%; MARGIN-BOTTOM: -1px; FONT: 100%/8px Tahoma; MARGIN-LEFT: 43px; BORDER-LEFT: medium none; COLOR: #ffffff; MARGIN-RIGHT: 0px; PADDING-TOP:
4px; BORDER-BOTTOM: medium none; POSITION: relative}
.save{behavior:url(#default#savehistory);}
.dspcont1{ display:none}
a.dsphead0 {BORDER-RIGHT: #B1BABF 1px solid; PADDING-RIGHT: 5em; BORDER-TOP: #B1BABF 1px solid; DISPLAY: block; PADDING-LEFT: 5px; FONT-WEIGHT: bold; FONT-SIZE: 8pt; MARGIN-BOTTOM: -1px; MARGIN-LEFT: 0px; BORDER-LEFT: #B1BABF 1px solid; CURSOR: hand; COLOR:
#FFFFFF; MARGIN-RIGHT: 0px; PADDING-TOP: 4px; BORDER-BOTTOM: #B1BABF 1px solid; FONT-FAMILY: Tahoma; POSITION: relative; HEIGHT: 2.25em; WIDTH: 95%; BACKGROUND-COLOR: #CC0000}
a.dsphead1 {BORDER-RIGHT: #B1BABF 1px solid; PADDING-RIGHT: 5em; BORDER-TOP: #B1BABF 1px solid; DISPLAY: block; PADDING-LEFT: 5px; FONT-WEIGHT: bold; FONT-SIZE: 8pt; MARGIN-BOTTOM: -1px; MARGIN-LEFT: 0px; BORDER-LEFT: #B1BABF 1px solid; CURSOR: hand; COLOR:
#ffffff; MARGIN-RIGHT: 0px; PADDING-TOP: 4px; BORDER-BOTTOM: #B1BABF 1px solid; FONT-FAMILY: Tahoma; POSITION: relative; HEIGHT: 2.25em; WIDTH: 95%; BACKGROUND-COLOR: #7BA7C7}
a.dsphead2 {BORDER-RIGHT: #B1BABF 1px solid; PADDING-RIGHT: 5em; BORDER-TOP: #B1BABF 1px solid; DISPLAY: block; PADDING-LEFT: 5px; FONT-WEIGHT: bold; FONT-SIZE: 8pt; MARGIN-BOTTOM: -1px; MARGIN-LEFT: 0px; BORDER-LEFT: #B1BABF 1px solid; CURSOR: hand; COLOR:
#ffffff; MARGIN-RIGHT: 0px; PADDING-TOP: 4px; BORDER-BOTTOM: #B1BABF 1px solid; FONT-FAMILY: Tahoma; POSITION: relative; HEIGHT: 2.25em; WIDTH: 95%; BACKGROUND-COLOR: #7BA7C7}
a.dsphead1 span.dspchar{font-family:monospace;font-weight:normal;}
td {VERTICAL-ALIGN: TOP; FONT-FAMILY: Tahoma}
th {VERTICAL-ALIGN: TOP; COLOR: #CC0000; TEXT-ALIGN: left}
BODY {margin-left: 4pt}
BODY {margin-right: 4pt}
BODY {margin-top: 6pt}
</style>
<script type="text/javascript">
function dsp(loc){
if(document.getElementById){
var foc=loc.firstChild;
foc=loc.firstChild.innerHTML?
loc.firstChild:
loc.firstChild.nextSibling;
foc.innerHTML=foc.innerHTML=='hide'?'show':'hide';
foc=loc.parentNode.nextSibling.style?
loc.parentNode.nextSibling:
loc.parentNode.nextSibling.nextSibling;
foc.style.display=foc.style.display=='block'?'none':'block';}}
if(!document.getElementById)
document.write('<style type="text/css">\n'+'.dspcont{display:block;}\n'+ '</style>');
</script>
</head>
<body>
<b><font face="Arial" size="5">$($Header)</font></b><hr size="8" color="#CC0000">
<font face="Arial" size="1"><b>Version 1 |M & C | <A HREF='http://mail.exchange.com'>mail.exchange.com</A></b></font><br>
<font face="Arial" size="1">Report created on $(Get-Date)</font>
<div class="filler"></div>
<div class="filler"></div>
<div class="filler"></div>
<div class="save">
Return $Report
Function Get-CustomHeader0 ($Title){
$Report = @"
<div class="dspcont0">
<h1><a href="javascript:void(0)" class="dsphead0" onclick="dsp(this)">
<span class="expando">show</span>$($Title)</a></h1>
<div class="dspcont0">
Return $Report
Function Get-CustomHeader ($Num, $Title){
$Report = @"
<h2><a href="javascript:void(0)" class="dsphead$($Num)" onclick="dsp(this)">
<span class="expando">show</span>$($Title)</a></h2>
<div class="dspcont">
Return $Report
Function Get-CustomHeaderClose{
$Report = @"
</DIV>
<div class="filler"></div>
Return $Report
Function Get-CustomHeader0Close{
$Report = @"
</DIV>
<div class="filler"></div>
Return $Report
Function Get-CustomHTMLClose{
$Report = @"
</div>
</body>
</html>
Return $Report
Function Get-HTMLTable{
param([array]$Content)
$HTMLTable = $Content | ConvertTo-Html
$HTMLTable = $HTMLTable -replace '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">', ""
$HTMLTable = $HTMLTable -replace '<html xmlns="http://www.w3.org/1999/xhtml">', ""
$HTMLTable = $HTMLTable -replace '<head>', ""
$HTMLTable = $HTMLTable -replace '<title>HTML TABLE</title>', ""
$HTMLTable = $HTMLTable -replace '<', "<"
$HTMLTable = $HTMLTable -replace '>', ">"
$HTMLTable = $HTMLTable -replace '</head><body>', ""
$HTMLTable = $HTMLTable -replace '</body></html>', ""
Return $HTMLTable
Function Get-HTMLLink ($activeURL){
$Report = @"
<a href=$activeURL>$activeURL</a>
Return $Report
Function Get-Ink ([String]$inData){
[String]$inclPercentage = @(35..100)
$positive = ($inclPercentage, 'Success', 'Ready', 'Running', 'OK', 'True', 'Information')
If ($positive -match $inData)
$Report = @"
<font color='#009900'>$inData</font>
Else
$Report = @"
<font color='#FF0000'>$inData</font>
Return $Report
Function Get-HTMLBasic ($Detail){
$Report = @"
<TABLE>
<tr>
<td width='75%'>$($Detail)</td>
</tr>
</TABLE>
Return $Report
Function Get-HTMLDetail ($Heading, $Detail){
$Report = @"
<TABLE>
<tr>
<th width='25%'><b>$Heading</b></font></th>
<td width='75%'>$($Detail)</td>
</tr>
</TABLE>
Return $Report
$input | foreach {$targets += @($_)}
If ((Test-Path variable:\targets) -eq $True){
Write-Host "Server list input detected on pipeline" -ForegroundColor Yellow
Else{
if ($auditlist -eq ""){
Write-Host "No server list specified, getting all Exchange 2007 servers" -ForegroundColor Yellow
$targets = Get-ExchangeServer | Where-Object {$_.IsExchange2007OrLater -eq $True}
else
if ((Test-Path $auditlist) -eq $false)
Write-Host "Invalid server list specified: $auditlist" -ForegroundColor DarkRed
exit
else
Write-Host "Using Audit list: $auditlist" -ForegroundColor Cyan
$Targets = Get-Content $auditlist
$now = Get-Date
#Custom Expressions
$latencyMS = @{Name="Latency(MS)";expression={[Math]::Round(([TimeSpan] $_.Latency).TotalMilliSeconds)}}
$MessageLatencyTime = @{Name="MessageLatencyTime";expression={[Math]::Round(([TimeSpan] $_.Latency).TotalMilliSeconds)}}
$hotLink = @{Name="URL";expression={Get-HTMLLink ($_.URL)}}
$colourResult = @{Name="Result";expression={Get-Ink ($_.Result)}}
$colourStatus = @{Name="Status";expression={Get-Ink ($_.Status)}}
$colourType = @{Name="Status";expression={Get-Ink ($_.Type)}}
$newResult = @{Name="Result";expression={If ($_.Result.ToString() -ne 'Success'){Get-Ink ('Failure')} Else {Get-Ink ('Success') }}}
$fullReport = Get-CustomHTML "Exchange 2007 "
$fullReport += Get-CustomHTMLClose
Foreach ($Target in $Targets){
Write-Host "Collating Detail for $Target" -ForegroundColor Yellow
Write-Host "..getting basic computer configuration"
$ComputerSystem = Get-WmiObject -computername $Target Win32_ComputerSystem
switch ($ComputerSystem.DomainRole){
0 { $ComputerRole = "Standalone Workstation" }
1 { $ComputerRole = "Member Workstation" }
2 { $ComputerRole = "Standalone Server" }
3 { $ComputerRole = "Member Server" }
4 { $ComputerRole = "Domain Controller" }
5 { $ComputerRole = "Domain Controller" }
default { $ComputerRole = "Information not available" }
$OperatingSystems = Get-WmiObject -computername $Target Win32_OperatingSystem
$TimeZone = Get-WmiObject -computername $Target Win32_Timezone
$Keyboards = Get-WmiObject -computername $Target Win32_Keyboard
$SchedTasks = Get-WmiObject -computername $Target Win32_ScheduledJob
$BootINI = $OperatingSystems.SystemDrive + "boot.ini"
$RecoveryOptions = Get-WmiObject -computername $Target Win32_OSRecoveryConfiguration
$exServer = Get-ExchangeServer | where {$_.Name -eq "$Target"}
$exVersion = "Version " + $exServer.AdminDisplayVersion.Major + "." + $exServer.AdminDisplayVersion.Minor + " (Build " + $exServer.AdminDisplayVersion.Build + "." + $exServer.AdminDisplayVersion.Revision + ")"
switch ($ComputerRole){
"Member Workstation" { $CompType = "Computer Domain"; break }
"Domain Controller" { $CompType = "Computer Domain"; break }
"Member Server" { $CompType = "Computer Domain"; break }
default { $CompType = "Computer Workgroup"; break }
$LBTime=$OperatingSystems.ConvertToDateTime($OperatingSystems.Lastbootuptime)
$MyReport += Get-CustomHeader0 "$Target - Role(s): $($exServer.ServerRole)"
$MyReport += Get-CustomHeader "2" "Basic Server Information"
$MyReport += Get-HTMLDetail "Computer Name" ($ComputerSystem.Name)
$MyReport += Get-HTMLDetail "Computer Role" ($ComputerRole)
$MyReport += Get-HTMLDetail "Exchange Role(s)" ($exServer.ServerRole)
$MyReport += Get-HTMLDetail "Last System Boot" ($LBTime)
$MyReport += Get-CustomHeaderClose
Write-Host "..getting logical disk configuration"
$Disks = Get-WmiObject -ComputerName $Target Win32_LogicalDisk
$MyReport += Get-CustomHeader "2" "Logical Disk Configuration"
$LogicalDrives = @()
Foreach ($LDrive in ($Disks | Where {$_.DriveType -eq 3})){
$Details = "" | Select "Drive Letter", Label, "File System", "Disk Size (GB)", "Disk Free Space", "% Free Space"
$Details."Drive Letter" = $LDrive.DeviceID
$Details.Label = $LDrive.VolumeName
$Details."File System" = $LDrive.FileSystem
$Details."Disk Size (GB)" = [math]::round(($LDrive.size / 1GB))
$Details."Disk Free Space" = [math]::round(($LDrive.FreeSpace / 1GB))
$Details."% Free Space" = Get-Ink ([Math]::Round(($LDrive.FreeSpace /1GB) / ($LDrive.Size / 1GB) * 100))
$LogicalDrives += $Details
$MyReport += Get-HTMLTable ($LogicalDrives)
$MyReport += Get-CustomHeaderClose
if ($exServer.ServerRole -like "*ClientAccess*")
{$MyReport += Get-CustomHeader "2" "OWA Connectivity"
Write-Host "..performing OWA connectivity test"
$colOWAResults = Test-OwaConnectivity -ClientAccessServer $Target
$MyReport += Get-HTMLTable ($colOWAResults | select MailboxServer, $hotLink, Scenario, $colourResult, $latencyMS, Error)
$MyReport += Get-CustomHeaderClose
Write-Host "..getting queue details"
if ($exServer.ServerRole -like "*HubTransport*")
$MyReport += Get-CustomHeader "2" "Queue Information"
$colQs = Get-Queue -server $Target
$MyReport += Get-HTMLTable ($colQs | Select-Object NextHopDomain, $colourStatus, MessageCount, NextRetryTime)
$MyReport += Get-CustomHeaderClose
Write-Host "..getting mailbox database information"
$spaceLog=[System.Diagnostics.EventLog]::GetEventLogs($target) | where {($_.LogDisplayName -eq "Application")}
$db = @{Name="database";Expression={$_.ReplacementStrings[1]}}
$freeMB = @{Name="MB";Expression={[int]$_.ReplacementStrings[0]}}
$whiteSpace = $spaceLog.entries | where {($_.TimeWritten -ge $now.AddDays(-1))} | where {($_.EventID -eq "1221")} | select $db,$freeMB
$ws = @{Name="White Space";expression={}}
if ($exServer.ServerRole -like "*Mailbox*")
$MyReport += Get-CustomHeader "2" "Mailbox Stores"
$colMailboxStores = Get-MailboxDatabase -Server $Target -Status | Sort-Object Name
$storeTable = @()
Foreach ($objMailboxStore in $colMailboxStores)
[string]$totalUsers = (get-mailbox -database $objMailboxStore).count
[string]$empty = $totalUsers.Length -eq 0
if ($empty -eq 'True')
[string]$totalUsers = "0"
$storeDetails = "" | Select Name, Mounted, "Total Users", "White Space", LastFullBackup
$storeDetails.Name = $objMailboxStore.Name
$storeDetails.Mounted = Get-Ink ($objMailboxStore.Mounted)
$storeDetails."Total Users" = $totalUsers
$storeDetails."White Space" = (($whitespace | where {$_.database -match $objMailboxStore.Name} | select -last 1).mb)
$storeDetails.LastFullBackup = $objMailboxStore.LastFullBackup
$storeTable += $storeDetails
$MyReport += Get-HTMLTable ($storeTable)
$MyReport += Get-CustomHeaderClose
$MyReport += Get-CustomHeader "2" "MAPI Connectivity"
Write-Host "..performing MAPI connectivity test"
$colMAPIResults = Test-MAPIConnectivity -Server $Target
$MyReport += Get-HTMLTable ($colMAPIResults | select Database, $newResult, $latencyMS, Error)
$MyReport += Get-CustomHeaderClose
$MyReport += Get-CustomHeader "2" "Mailflow Test"
Write-Host "..performing Mailflow test"
$colMailflowResults = Test-Mailflow -Server $Target
$MyReport += Get-HTMLTable ($colMailflowResults | select TestMailflowResult, $MessageLatencyTime)
$MyReport += Get-CustomHeaderClose
Write-Host "..getting Exchange services"
$ListOfServices = (gwmi -computer $Target -query "select * from win32_service where Name like 'MSExchange%' or Name like 'IIS%' or Name like 'SMTP%' or Name like 'POP%' or Name like 'W3SVC%'")
$MyReport += Get-CustomHeader "2" "Exchange Services"
$Services = @()
Foreach ($Service in $ListOfServices){
$Details = "" | Select Name,Account,"Start Mode",State,"Expected State"
$Details.Name = $Service.Caption
$Details.Account = $Service.Startname
$Details."Start Mode" = $Service.StartMode
If ($Service.StartMode -eq "Auto")
if ($Service.State -eq "Stopped")
$Details.State = $Service.State
$Details."Expected State" = Get-Ink ("Unexpected")
If ($Service.StartMode -eq "Auto")
if ($Service.State -eq "Running")
$Details.State = $Service.State
$Details."Expected State" = Get-Ink ("OK")
If ($Service.StartMode -eq "Disabled")
If ($Service.State -eq "Running")
$Details.State = $Service.State
$Details."Expected State" = Get-Ink ("Unexpected")
If ($Service.StartMode -eq "Disabled")
if ($Service.State -eq "Stopped")
$Details.State = $Service.State
$Details."Expected State" = Get-Ink ("OK")
If ($Service.StartMode -eq "Manual")
$Details.State = $Service.State
$Details."Expected State" = Get-Ink ("OK")
If ($Service.State -eq "Paused")
$Details.State = $Service.State
$Details."Expected State" = Get-Ink ("OK")
$Services += $Details
$MyReport += Get-HTMLTable ($Services)
$MyReport += Get-CustomHeaderClose
$eventLogs=[System.Diagnostics.EventLog]::GetEventLogs($Target) | where {($_.LogDisplayName -eq "Application") -OR ($_.LogDisplayName -eq "System")}
$warningEvents = @()
$errorEvents = @()
$LogSettings = @()
$MyReport += Get-CustomHTMLClose
$fullReport += $MyReport
$MyReport = $null
$Date = Get-Date
$Filename = ".\" + "Exchange_Health" + "_" + $date.Hour + $date.Minute + "_" + $Date.Day + "-" + $Date.Month + "-" + $Date.Year + ".htm"
$fullReport | out-file -encoding ASCII -filepath $Filename
Write "Audit saved as $Filename"
Invoke-Item $Filenameplease refer to my scripts below, it should get you started.
http://www.myexchangeworld.com/2010/03/powershell-disk-space-html-email-report/
http://www.myexchangeworld.com/2010/07/powershell-script-to-monitor-exchange-server-2010-services-email-report/
you can customsise this to your needs and add relevant information.
cheers
thiyagu
Thiyagu | MCTS/MCITP - Exchange 2007 | MCSE 2003[Messaging] | http://www.myExchangeWorld.com. This posting is provided "AS IS" with no warranties, and confers no rights. -
Exchange 2013 Daily Health Check Script
Hi All,
I recently migrated from Exchange 2010 to Exchange 2013. Prior to the migration the daily health check was being used daily to send my team and I the HTML report.
I have downloaded the new v1.07 script and followed the same rules and settings I used for Exchange 2010 when setting up the script.
The script only runs now via Exchange shell and does not send the HTML report and I am unable to run the script via a batch file that called the ./ps1 file in a windows command prompt and am also unable to as a result, use the task scheduler to schedule
this task.
I am desperately in need of getting this morning report as its been so useful, I cant do without it now.
Any advise would be greatly appreciated.
Thanks so much
AltonSo, could you please check this link, it provide the solution to check the daily health of exchange 2013 :
http://exchangeserverpro.com/troubleshooting-exchange-server-2013-with-test-cmdlets/
Maybe you are looking for
-
Scroll bar problems ..Please help!!!!!!
This is what the program looks like. topPanel has newItemPanel on top of it. when you click continue newItemPanel becomes invisible and newItemDescriptionPanel becomes visible. When you click continue newItemDescriptionPanel becomes invisible and pri
-
I recently purchased a new iPad. I would like to delete my email addresses from my old iPad so I can give it to my grandson. How do I do that for just the old iPad?
-
Key scenes on DVD appear too dark!
I've recently finished a project in which many of the poorly lit but viewable scenes from a wedding appear way darker than on the Mac screen or the cam itself. Having read through the forums I now realise that the Imovie rendering/process to IDvd can
-
Signal Quality issues - totally stumped
My first post so apologies if I step on anyones toes. I've had a browse through and can't find an existing post that covers my scenario. For a while now my box has been having issues on certain channels. The exact scenario is that the signal quality
-
Upload the document from other site to sharepoint library
Hi All, I am having folder with document in want to upload the bulk of that document to SharePoint library. Please let me know how can i do. Thank you, Sowjanya.