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
    Alois

    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
    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
    Rory

    Hi,
    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 K

    Hello 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 Standard

    Martina 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 started

    Hello,
    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,
    Steve

    Hi 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 please

    Hi,
    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 '&lt;', "<"
     $HTMLTable = $HTMLTable -replace '&gt;', ">"
     $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 $Filename

    please 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
    Alton

    So, 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