BRONZE PARTNER:
BRONZE PARTNER:
Industry News:

| |
| |
 |
 |
 |
 |
 |
| PowerShell Script to check Operation Manager 2007 Agents Service and HealthState |
 |
|
|
By: Ying Li
Posted On: 7/10/2008
Here is a PowerShell script to check OpsMgr Agents Service and HealthState
This article was Previously posted on Ying Li's Blog
You need to either run it in Operation Manager's own command shell or you can use regular PowerShell console as mentioned in my previous post Here
Below is what's in AddConnSCOMSnapin.ps1
Add-PSSnapin "Microsoft.EnterpriseManagement.OperationsManager.Client" Set-Location "OperationsManagerMonitoring::" $rootMS = "XYZOPMP01" new-managementGroupConnection -ConnectionString:$rootMS Set-Location $rootMS
PS C:\Documents and Settings\yl.admin\My Documents\PS> .\AddConnSCOMSnapin.ps1
PathName : ManagementGroup : XYZ Enterprise Apps ManagementServerName : XYZOPMP01 Drives :
PS Microsoft.EnterpriseManagement.OperationsManager.Client\OperationsManagerMonitoring::XYZOPMP01> & "C:\Documents and Settings\yl.admin\My Documents\PS\CheckAgentHealth.ps1"
Below is the script - CheckAgentHealth.ps1
#Start
$erroractionpreference = "SilentlyContinue"
$a = New-Object -comobject Excel.Application $a.visible = $True
$b = $a.Workbooks.Add() $c = $b.Worksheets.Item(1)
$c.Cells.Item(1,1) = "Machine Name" $c.Cells.Item(1,2) = "Ping Status" $c.Cells.Item(1,3) = "Health Service Status" $c.Cells.Item(1,4) = "Health State"
$d = $c.UsedRange $d.Interior.ColorIndex = 19 $d.Font.ColorIndex = 11 $d.Font.Bold = $True $d.EntireColumn.AutoFit($True)
$intRow = 2
#get all the agent managed servers from OpsMgr
$ColServers = get-agent
foreach ($strServer in $colServers) { $c.Cells.Item($intRow, 1) = $strServer.Computername.ToUpper()
# Ping each server
Function PingServer { $ping = new-object System.Net.NetworkInformation.Ping $Reply = $ping.send($strServer.Computername) if ($Reply.status –eq “Success”) { $c.Cells.Item($intRow, 2) = “Online” } else { $c.Cells.Item($intRow, 2).Interior.ColorIndex = 3 $c.Cells.Item($intRow, 2) = "Offline" } } PingServer
#Check if the HealthService is running
Function CheckHealthService { $HealthService = [System.ServiceProcess.ServiceController]::GetServices($strServer.Computername) | where{$_.name -eq 'HealthService'} If ($HealthService.status -eq "Running") { $c.Cells.Item($intRow, 3) = "Running" } ElseIf($HealthService.Status -eq "Stopped") { $c.Cells.Item($intRow, 3).Interior.ColorIndex = 3 $c.Cells.Item($intRow, 3) = "Stopped" #You can start the service here if you want to
#$HealthService.Start() } Else { $c.Cells.Item($intRow, 3).Interior.ColorIndex = 6 $c.Cells.Item($intRow, 3) = "Not Sure" } } CheckHealthService
# get the HealthState of the agents
#(you will get a number: 0-uninitialized; 1-success; 2-warning; 3-errors)
$c.Cells.Item($intRow, 4) = $strServer.HealthState
$intRow = $intRow + 1
} $d.EntireColumn.AutoFit()
#End
|
 |
 |
 |
|
|