SCOM 2007 R2 – Пакетный перевод агентов в Maintenance Mode

imageВ окружении с большим количеством агентов мониторинга SCOM 2007 R2 массовый перевод этих агентов  в режим обслуживания (Maintenance Mode) через UI консоль может стать весьма хлопотным занятием. На помощь в таком случае как всегда приходит Operations Manager Shell.

Например, для того чтобы перевести в Maintenance Mode все сервера в имени которых встречается “SQL”, с текущего момента сроком на 2 часа в Operations Manager Shell можно выполнить следующий нехитрый скрипт:

$Time1 = [DateTime]::Now

$Time2 = $Time1.AddMinutes(120)

$Agents  = Get-Agent | Where {$_.Name –match "SQL"}

$Agents | foreach {New-MaintenanceWindow -StartTime $Time1 -EndTime $Time2 -Reason "PlannedOther" -Comment "Maintenance Mode Window" -MonitoringObject $_.HostComputer}

Здесь вместо функции AddMinutes() можно также использовать AddHours() и AddDays()

Или другой пример, когда необходимо указать конкретный диапазон дат:

[DateTime] $Time1 = "11/23/2010"

$Time1 = $Time1.ToUniversalTime()

[DateTime] $Time2 = "11/28/2010"

$Time2 = $Time2.ToUniversalTime()

$Agents  = Get-Agent | Where {$_.Name –match "SQL"}

$Agents | foreach {New-MaintenanceWindow -StartTime $Time1 -EndTime $Time2 -Reason "PlannedHardwareMaintenance" -Comment "Hardware Maintenance" -MonitoringObject $_.HostComputer}

Если же в организации существуют регламентированные окна обслуживания, в период действия которых нужно обязательно по расписанию снимать с мониторинга агентов для проведения процедур обслуживания, можно поместить вызов скрипта из первого примера в планировщик задач. При этом команда запуска будет следующей:

%SYSTEMROOT%system32WindowsPowerShellv1.0powershell.exe C:MaintenanceModeStartMaintenanceModeWindow.ps1

Так же для того чтобы скрипт успешно отработал при таком вызове из планировщика задач, в начало скрипта следует добавить строки инициализации командлетов Operations Manager Shell и вызов подключения к корневому серверу управления SCOM (RMS):

$RMSServer = 'RMSServerName'

Add-PSSnapin "Microsoft.EnterpriseManagement.OperationsManager.Client";

Set-Location "OperationsManagerMonitoring::";

New-ManagementGroupConnection -ConnectionString:$RMSServer;

Set-Location $RMSServer;

Дополнительные источники информации:

System Center TechCenter - How to Put a Monitored Object into Maintenance Mode in Operations Manager 2007

System Center TechCenter- Operations Manager 2007 R2 Cmdlets - New-MaintenanceWindow

Collection of Maintenance Mode Scripts, Utilities and MPs for Opsmgr and Essentials 2007 (Updated for SCOM 2007 R2)

System Center Operations Manager Forums > Extensibility > Setting all entities to maintenance based on a particular class

Добавить комментарий