Мне не очень нравится когда для работы в различных системах приходится держать запущенными множество разных приложений. К сожалению с этим редко можно что то сделать, но уж если можно… почему бы не попробовать? 🙂 И я попробовал сделать синхронизацию активных алертов между Operations Manager и списком SharePoint, чтобы можно было открывать консоль Operations Manager только при необходимости 🙂 Честно говоря я думал что это займёт у меня достаточно много времени, но к моему удивлению я уложился всего за один вечер. За это надо благодарить родную поддержку PowerShell в OpsMgr, достаточно простую объектную модель SharePoint, и скринкаст Александра Романова на TechDays.ru в котором он показал как с этой объектной моделью работать 🙂
В результате у меня получилось 2 скрипта:
Оба скрипта можно скачать в этом архиве.
Вместо того чтобы описывать процесс установки, я записал его в скринкаст (9Mb, WMV), надеюсь там ничего сложного 🙂 Ну и в нём же небольшая демонстрация работы 🙂
Еще несколько моментов на которые стоит обратить внимание:
- Запускать скрипт надо на сервере с SharePoint’ом, не уверен что будет работать удалённо.
- На том же сервере должна быть установлена консоль OpsMgr + Command Shell. Из неё надо один раз подключиться к серверу OpsMgr, чтобы он прописался в реестре.
- Разумеется надо разрешить выполнение неподписанных сценариев: Set-ExecutionPolicy "RemoteSigned"
- Не мешает проверить настройки начале скрипта Sync-OpsMgr2SP.ps1 и удостовериться что они соответствуют вашим условиям.
- TimeSkew – смещение времени SharePoint относительно OpsMgr. У меня время в OpsMgr отставало на 4 часа (Видимо время там хранится по GMT 0), соответственно эта переменная равна 4.
- ListURL – адрес списка SharePoint. Можно посмотреть в свойствах списка.
- AlertURL – адрес для просмотра алертов в Web Console OpsMgr. В конце приписывается ID алерта, и добавляется в столбец Link в списке SharePoint.
- States – Здесь указывается соответствие цифровых кодов состояний в OpsMgr и их названий. Если у вас добавлены новые состояния (кроме New и Resolved) вы можете дописать их сюда. Ну и в списке SharePoint нужно будет добавить такие же значения для поля Resolution.
- Для выполнения постоянной синхронизации, лучше не перезапускать сценарий через какие то промежутки времени, а вызвать его например при старте системы (это можно сделать через планировщик задач) с ключом –Continuous, тогда он будет крутиться постоянно, через промежутки времени указанные в параметре -Interval (по умолчанию 10 секунд). Это гораздо эффективнее с точки зрения производительности. Если указан ключ –Force то синхронизация будет работать только в одну сторону – из OpsMgr в SharePoint.
Код по-моему получился достаточно несложным, так что при желании можно прикрутить синхронизацию и других свойств. Например может быть полезным синхронизировать Custom Properties.
Я пока тестировал эту штуку только в лабораторных условиях, так что буду благодарен если кто то попробует её в деле, и расскажет о своих успехах, или моих ошибках 😉