Написано [Ваше имя]
Если вы используете System Centre Operations Manager (SCOM) для мониторинга вашего Windows-парка, вы, возможно, столкнулись с ограничением при обновлении списка подписчиков для группы уведомлений. Это относится к процессу изменения ответственного сотрудника для конкретного отдела. Обычно только администратор SCOM имеет право выполнять эту задачу, что может быть неудобно, если вы хотите, чтобы каждый отдел управлял своими подписчиками, не предоставляя им полного административного доступа к консоли SCOM.
Одно из решений этой проблемы – создать автономное приложение или веб-сайт, который позволяет авторизованным пользователям обновлять подписчиков. В этой статье мы рассмотрим, как достичь этого с помощью класса .NET Microsoft.EnterpriseManagement.
Сначала давайте взглянем на следующий фрагмент кода, который демонстрирует, как получить подписчика из группы уведомлений с именем DeptName:
public static string FindSCOM_Subscriber(string DeptName) {
string SCOMServer = "ИмяСервера";
string returnString = "";
try {
// Установить соединение с сервером SCOM
ManagementGroup mg = new ManagementGroup(SCOMServer);
// Подключиться к группе уведомлений
Microsoft.EnterpriseManagement.Administration.NotificationRecipient connector = new Microsoft.EnterpriseManagement.Administration.NotificationRecipient(DeptName);
connector.Reconnect(mg);
// Получить подписчиков
Microsoft.EnterpriseManagement.Administration.NotificationRecipient name = connector.ManagementGroup.GetNotificationRecipient(DeptName);
// Вернуть имя и адрес (например, номер мобильного телефона)
returnString = name.Devices[0].Address.ToString() + "; " + name.Devices[0].Name.ToString();
} catch (Exception objException) {
// Если значения не найдены, вернуть соответствующую текстовую строку
returnString = "Нет значения";
}
return returnString;
}
Далее рассмотрим следующий фрагмент кода, который демонстрирует, как обновить группу уведомлений с именем DeptName новым подписчиком:
public static string UpdateSCOM_Subscriber(string DeptName, string PagerNo, string OnCallName) {
string SCOMServer = "ИмяСервера";
string returnString = "";
try {
// Установить соединение с сервером SCOM
ManagementGroup mg = new ManagementGroup(SCOMServer);
// Подключиться к группе уведомлений
Microsoft.EnterpriseManagement.Administration.NotificationRecipient connector = new Microsoft.EnterpriseManagement.Administration.NotificationRecipient(DeptName);
connector.Reconnect(mg);
// Получить подписчиков
Microsoft.EnterpriseManagement.Administration.NotificationRecipient name = connector.ManagementGroup.GetNotificationRecipient(DeptName);
// Получить текущий номер пейджера получателя
string RecipientAddress = name.Devices[0].Address.ToString();
string RecipientName = name.Devices[0].Name.ToString();
// Обновить данные подписчика
name.Devices[0].Name = OnCallName;
name.Devices[0].Address = PagerNo;
name.Update();
returnString = DeptName + " успешно изменен с " + RecipientName + " на " + OnCallName;
} catch (Exception objException) {
returnString = "Произошла ошибка: " + objException.Message.ToString();
}
return returnString;
}
В заключение, автоматизация обновления подписчиков в System Centre Operations Manager может значительно упростить процесс управления ответственными сотрудниками разных отделов. Создав автономное приложение или веб-сайт, использующий класс .NET Microsoft.EnterpriseManagement, вы можете предоставить отделам возможность обновлять своих собственных подписчиков, не предоставляя им полного административного доступа к консоли SCOM.
Хотя код может показаться простым сейчас, вначале его может быть сложно понять и реализовать. В то время было ограниченное количество примеров для .NET, и мне пришлось перевести пример PowerShell, чтобы достичь желаемой функциональности. Надеюсь, эта статья поможет другим, столкнувшимся с подобными проблемами.