Powershell - Daily Health Check

Hi all,
I have a number of different w8k and w12k servers in different sites and I wanted create a daily health check to check services are up. For instance I can write a ps script to check run at 6am daily and check various services on a windows server and then
generate a html report and mail it to a distribution list. However on some of my servers I only have one service that needs to be checked I wanted a was to check the services and collate all the reports into one place and output just one html report?
So for example could I output the results to a text file, run an ftp job to send the result to a central location and then run a ps to scrap all the results and output to html, or could the text files be scrapped from an email, this method makes better sense
for me as some of these servers will have ACLs between then and getting send via smtp will be easier then ftp.
Would like to know if anyone has any ideas or experience with doing something like this?

Are the servers on the same domain? If so use "Enter-PSSession" or if your just checking if a service is running use the "-Computer" switch to execute it on the remote server.
You could also use WMI "Get-WMIObject"
Using the above methods will let you run it from a central location. 
My suggestion for performing your health checks is to define in a csv file: Server Name, IP, Heath Check Level
So have an initial Ping for the host name, if that fails then use the IP as DNS might have an issue (record results into file)
Heath Ckeck level determines if your just checking full server health or just checking for a specif service is running (ie Full, Service, ect... you define it for your requirements)
I would use WMI as there could be different versions of powershell installed and take the compatibility issues away when writing the script.
Below is a good starting script for you to use where it queries via WMI and generates a html report that is emailed out.
https://gallery.technet.microsoft.com/scriptcenter/Powershell-Script-to-Get-78687c5e  
Cheers,
Martin
Blog:
http://sustaslog.wordpress.com 
LinkedIn:
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.

Similar Messages

  • 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/

  • Daily Health Check MESSAGE

    I'm a simple user.  Here is what I get.  ---   Daily Health Check "Could not read the language folder for the Installation Monitor"  1) Is this serious?  2) How do I fix it?  Thanks.

    >
    > please
    thanksAs you said,
    query you wrote above would give details about users sessions wait time and state,
    and that info by itself would inform you about just one small piece of the overall database health state,
    so by that query alone you can't be 100% sure that your db is not sick.
    I guess you should also at least check: backup status,datafiles space availability,alert.log and istener.log for errors ,db objects status, oracle memory structures utilization...
    and so on... + any similar checks or those ones specific to your company needs..
    AWR report is mostly self-explanatory and ways how to analyze it was already many times eplained on www,you should search for those instructions
    and come here with more concrete question regarding the AWR report.

  • XI system Daily health check

    Hi Gurus,
    We have huge production setup, so its high time for us to come up with detailed 'Daily XI systems health check-out' and have pro-active monitoring these systems.
    So requesting you to, please help me with items/areas those needs to be checked at regular intervals for daily monitoring....a good reference doc may help me great.
    Thanks all in advance.
    Regards
    Sekhar

    Sekhar,
    There are few checks that needs to be carried out daily and weekly as recommended by SAP. Please check this SAP note :  Note 884865 - PI/XI Admin Check and also this document where they have the steps:
    https://websmp110.sap-ag.de/~sapidb/012006153200000666252007E/Admin_Check_Version2.pdf
    Regards,
    ---Satish

  • Responsibility and health check

    hi friends
    just need some help to prepare good document as my management insited
    i am only the dba working for two node rac
    windows
    10.2.0.4
    asm
    here if any issue arrives i am only the person to handle,so my management decided to list out all the activities.
    from i just what are daily health check or responsibilities of sys admin,os level admin,asm leve...............storage dept .............architect leve
    as i have updated database level activities
    can you please give me list of activities they should handle in this enivronment(sys admin,os level admin,asm leve...............storage dept .............architect leve)
    thanks for your help and support
    cheers

    These are the tasks for the oralce dba. For the other related fields , either check their doc guide or ask the people who work in that domain,
    http://download.oracle.com/docs/cd/E11882_01/server.112/e17120/dba002.htm#i1006205
    Aman....

  • Health Checks - 11G

    Hello,
    I am very interested to learn and find out what your daily health checks consists of.
    Thank you

    How do I ask a question on the forums?
    SQL and PL/SQL FAQ

  • 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

  • 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.

  • [Resolved][SCE 2010] Daily Health Report

    Hello everybody!
    I'm working in the IT support. And it turns that we cannot found the origin of one problem.
    I explain myself:
    We have many servers. For the exchange for System Center Essentials2010 and others.
    But since the beginning of October the Daily Health Report is not send automatically.
    I have tried to follow all the steps to configure the DHR (Daily Health Report) but it seems not working yet! When I press the bottom to send the DHR it works (manually)! But it is not working automatically.
    Does somebody have any idea?

    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/

  • Database Health Check Enquiry

    Hi all,
    Some enquires regarding database health check. I did some research regarding health check, got overwhelmed by the information available out there.
    Currently I don't have any report on hand, but currently working and starting on one. This report serves as a report for reference, to understand if there's any database performance issue, and as a report for management.
    Wish to check with you folks, what are the typical things that I can look at on a daily basis to understand my database health status, eg. Buffer Hitrate, database I/O etc, especially those that may/will contribute to impact on the database performance. Or is there any good reference link whereby I can do some readup regarding such a health check?
    Thanks in advance for any input.
    Eugene

    Hi Eugene,
    Well that's a pretty open question and I guess you will get a lot of replies which I look forward to monitoring as there should be some very interesting ones there.
    Anyway, let me just open with one point that I have found very useful in the past. As regards Database Performance , you can look as much as you like at the statistics and a great deal of discretion is required in interpreting them but the real test for me of how well a database is performing is in terms of the user (or application) perception. Are the responses from the database good enough to meet the users expectations. Check the average response time for example and set guidellines for what is acceptable, very good response , very bad response etc.
    I use this as a guideline so then once the database is perfoming in the sense that the user is satisfied (or better still happy with the performance) we can gather the statistics (from Oracle 10g onwards there are lots of tools built in like ADDM and AWR for gathering and storing the database statistics) and create baselines. Once we have baselines for a normally performing system, as soon as problems are reported we can run off a diagnostic tool like ADDM for that period , compare it against the baseline and look for the striking differences. From there we can start an analysis of individual numbers, buffer hit ratios etc. to delve further.
    Hope this helps , I am sure lots of other people will chip in to this
    Regards

  • 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!

  • SC DPM 2012 Health check

    Hi All,
    I have System center DPM 2012 which takes backup of Exchange 2010, File server, VM's and system state for physical servers. I want to perform health check on DPM.  Kindly recommend any tool or report format and how to perform health check ?

    The only thing i know is the Configuration Analyzer from MS: http://technet.microsoft.com/en-us/library/jj992580.aspx
    All other things can be done with PowerShell Scripts:
    Browse Gallery: http://gallery.technet.microsoft.com/site/search?f%5B0%5D.Type=RootCategory&f%5B0%5D.Value=SystemCenter&f%5B0%5D.Text=System%20Center&f%5B1%5D.Type=SubCategory&f%5B1%5D.Value=protection&f%5B1%5D.Text=Data%20Protection%20Manager
    Or: http://www.techguy.at/scdpm/
    Seidl Michael | http://www.techguy.at |
    twitter.com/techguyat | facebook.com/techguyat

  • SAP Functional Health check (or) audit

    Hai,
    We want to do daily Audit  for all Modules in ECC 6. Is there any check points available? Because like VKOA Settings(Pooled table )datas are missing at the time of new settings. Please tell .
    Regards,
    J.Tamilarasi

    Digging up an old question.
    The exercise was completed using my current knowledge and some improvised output tailored to the customer's need, it was not necessarily a health check audit from a purely technical perspective. It also involved the customer acceptability and usage analysis of the system. Because i strongly believe that a comprehensive system design is only as good as its user.
    Anyways for anyone looking for the actual document mentioned in the earlier posts and not to be found anywhere, here it is attached, which is a comprehensive checklists of steps, both inside SAP and otherwise which are to be considered when planning a system audit. Although old, it might provide a good reference checklist of items to be done.
    I have renamed the doc file, to let it be more meaningful in case it need to refer to it.
    http://1drv.ms/1wIeDbR
    Hope you find it useful.

  • DirectAccess Server Health Check URL

    I am looking at using an external hardware load-balancer with a DirectAccess 2012 R2 implementation.  Besides an ICMP echo-reply, does anyone know of a specific URL I could plug in as a health check to determine the DA server availability.
    Thanks...

    Hi,
    A subject I'm currently working on. IPHTTPS, it's only TCP443, it does not proove that DirectAccess works. Because i wanted to avoid to write complex check rules, I choose to rely on Powershell.
    A simple Get-RemoteAccessHealth -verbose | Where {$_.HealthState -ne "Disabled"} return status for all involved components (whatever your configuration). Each component can be OK or KO. I have a script that parse this result and write a simple
    text file with OK or KO. This file is designed to be consumed by the HLB Appliance throught IIS (available on the DirectAccess Gateway). With such approach, monitoring DirectAccess health is becoming easy.
    So your HLB applicance can detect if one of your DirectAccess Gateway is not operational (eg Failing OTP or expired certificate) and remove it from your pools.
    BenoitS - Simple by Design http://danstoncloud.com/blogs/simplebydesign/default.aspx

  • How can I support a health check, from a load balancer?

    My company has load balancers which use health checks to determine if the end point is available for client traffic. The basic health check is a tcp ping, and will tell you if the device is on the network. The next level of health check is an http request. This request, and the response are static, you can’t create your own version of the request and response. The standard request is this:
         http://host:port/healthcheck/hc.html
    The standard response is this:
         “The server is available”
    I want to use the load balancer as part of my total deployment. The problem is that I am not seeing how to support this health check request and response in the MDEX engine. What I see is this request
         http://host:port/admin?op=ping
    Will return this response
         dgraph <host>: <port> responding at <day month year time>
    It is nice that there is a built in ping, but I am not able to make use of it. I am new to Endeca and still poking around. The dgraph process listens on a port set up in <…>/config/script/AppContext.xml
    <dgraph id="Dgraph1" host-id="MDEXHost" port="3281">
    <properties>
    <property name="restartGroup" value="A" />
    <property name="updateGroup" value="a" />
    </properties>
    <log-dir>./logs/dgraphs/Dgraph1</log-dir>
    <input-dir>./data/dgraphs/Dgraph1/dgraph_input</input-dir>
    <update-dir>./data/dgraphs/Dgraph1/dgraph_input/updates</update-dir>
    </dgraph>
    (I am not using the default port, as I only have an instance on a shared server and have to worry about port clashing. But that is a different thread.)
    In a standard tc Server install I can support this health check by doing this:
    * Create a directory named “healthcheck”, in the “webapps” directory.
    * Place a file name “hc.html” in that directory, which contains “The server is available”
    The one hack which comes to mind is to write a servlet which would be able to be a smart proxy for the load balancer health check. It would pass along any regular traffic to the MDEX engine. But if the request was a health check it would send “admin?op=ping” to the MDEX engine, and for a good response from the engine, create and pass back the correct response to the load balancer.
    Ideas, comments, flames, …
    Thanks

    Hi, we are using following String to test the MDEX ping response but we get the invalid version formation on dgraph.log -
    following is on F5
    GET /admin?op=ping HTTP/1.1/r/nHost:myhost.endeca.com:19000/r/nConnection:close/r/n/r/n
    Following gets logged on Dgraph.log
    WARN 09/05/12 05:30:03.799 UTC (1346823003799) DGRAPH {dgraph} Invalid version format in 'HTTP/1.1/r/nHost:myhost.endeca.com:19000/r/nConnection:close/r/n/r/n'
    Please let me know - if you have any suggestions to solve this issue.
    I know that it works from browser and wget from unix with following commands.
    wget http://myhost.endeca.com:19000/admin?op=ping - from unix command line
    from browser:
    http://myhost.endeca.com:19000/admin?op=ping
    Thanks,
    Ram

Maybe you are looking for

  • PlayOptions playMode="pause" How can you get a web show to autostart?

    LR3.2 I created several Web Albums and want the albums to start immediately without any user interaction. I'm assuming that under resources->styles in the style.xml one would use Options playMode which has a default setting of pause, what are the oth

  • How do you see your Ipod track list in Itunes 7???

    When you connect your Ipod to Itunes 7 all it shows is a summary page and not the track list. How to you see the tracks on your Ipod manually???

  • Focus vertical scroll bar in report div

    Hi everyone, I just want to know if the issue has been resolved by someone : I have a report within a div and a vertical scrolling bar to scroll the rows. When I click on a row of the report the row is highlighted. Now, if the clicked row is at the e

  • Webcenter PS5 - 11.1.1.6.0 Patchset Released

    Hi All , Webcenter PS5 - 11.1.1.6.0 Patchset MLR 10 has been released on MyOracleSupport portal . Patch 15922432: WCC 11.1.1.6.0 BUNDLE (MLR 10)JAN 17 2012 https://support.oracle.com/epmos/faces/PatchDetail?patchId=15922432 This would include patches

  • Help with the Update

    Any help out there on how to do the upgrade? Went thorugh tutorial, but cannot get to the prompt for the download. Message was edited by: firstpink