Size: a a a

SCOM + SCorch + DPM

2020 September 10

andreyvsc Щепачев... in SCOM + SCorch + DPM
@VladimirZelenov а как пошем выдернуть объекты мониторинга с проблемными мониторами?
источник

ВЗ

Владимир Зеленов... in SCOM + SCorch + DPM
С проблемными - это которые в состоянии Critical/Warning?
источник

andreyvsc Щепачев... in SCOM + SCorch + DPM
Угу
источник

ВЗ

Владимир Зеленов... in SCOM + SCorch + DPM
Хз, через БД легко, через Posh не пробовал.
источник

andreyvsc Щепачев... in SCOM + SCorch + DPM
Я нарыл скрипт который берет statehierarchy у каждого monitoringobject
источник

andreyvsc Щепачев... in SCOM + SCorch + DPM
И его если запускать в рекурсию, то он спускается до последнего роллапа
источник

andreyvsc Щепачев... in SCOM + SCorch + DPM
А потом, на самом интересном месте он заканчивается
источник

andreyvsc Щепачев... in SCOM + SCorch + DPM
А из бд как???
источник

MS

Max Serg in SCOM + SCorch + DPM
источник

ВЗ

Владимир Зеленов... in SCOM + SCorch + DPM
В БД таблица есть, в которой есть состояния мониторов.
источник

MS

Max Serg in SCOM + SCorch + DPM
отсюда можете взять кусок кода
источник

ВЗ

Владимир Зеленов... in SCOM + SCorch + DPM
Не, это понятно как делать.
источник

ВЗ

Владимир Зеленов... in SCOM + SCorch + DPM
Через объект менеджмент группы.
источник

ВЗ

Владимир Зеленов... in SCOM + SCorch + DPM
Ща, чего-нибудь наговнякаю.
источник

MS

Max Serg in SCOM + SCorch + DPM
function CheckState( $node )
{
   if ( $node -and (  $node.Item.HealthState -eq "Error" ))
   {
       $monitor = Get-SCOMMonitor -id $node.Item.MonitorId

       if ( $monitor.pstypenames.contains("Microsoft.EnterpriseManagement.Configuration.ManagementPackUnitMonitor"))
       {        
             $o = get-scommonitoringobject -id $node.Item.MonitoringObjectId
             write-host $o.path ": " $monitor.DisplayName "(" $o.DisplayName ")"
       }
   }
   foreach( $child in $node.ChildNodes ) { CheckState( $child ) }
}

Get-scommonitoringobject | where-object{ $_.healthState -eq "Error" } | foreach-object{
CheckState( $_.GetMonitoringStateHierarchy() ) }
источник

MS

Max Serg in SCOM + SCorch + DPM
но как указали выше, через БД будет проще и быстрее
источник

andreyvsc Щепачев... in SCOM + SCorch + DPM
Max Serg
function CheckState( $node )
{
   if ( $node -and (  $node.Item.HealthState -eq "Error" ))
   {
       $monitor = Get-SCOMMonitor -id $node.Item.MonitorId

       if ( $monitor.pstypenames.contains("Microsoft.EnterpriseManagement.Configuration.ManagementPackUnitMonitor"))
       {        
             $o = get-scommonitoringobject -id $node.Item.MonitoringObjectId
             write-host $o.path ": " $monitor.DisplayName "(" $o.DisplayName ")"
       }
   }
   foreach( $child in $node.ChildNodes ) { CheckState( $child ) }
}

Get-scommonitoringobject | where-object{ $_.healthState -eq "Error" } | foreach-object{
CheckState( $_.GetMonitoringStateHierarchy() ) }
Вот это я и нашел
источник

andreyvsc Щепачев... in SCOM + SCorch + DPM
Оно прекрасно показывает иерархию
источник

andreyvsc Щепачев... in SCOM + SCorch + DPM
Но при проблеме с диском c:
источник

ВЗ

Владимир Зеленов... in SCOM + SCorch + DPM
Да даже можно через объект ManagementGroup, в отличие от командлетов, методы этого класса умеют работать с запросами
источник