Невозможно изменить название папки или представления в Operations Manager

Типовая задача для Operations Manager (версии 2007 R2 и 2012): в разделе Monitoring создаётся иерархия папок и представлений для более удобного просмотра данных операторами. При этом многие пользователи наблюдают следующий "странный" эффект. После создания папки или представления, любая попытка её переименования с помощью опции Rename меняет её название только на несколько секунд - после первого же обновления возвращается старое значение. При этом другие пользователи заявляют, что всё-таки видят изменённое название.

Попробуем разобраться, что происходит и как избежать подобных проблем?

Сначала, попробуем воспроизвести проблему:

  1. Создайте папку с названием Test и сохраните в любой management pack.
  2. В этой папке создайте представление Test (например, типа Alert View) с любыми фильтрами.
  3. Переименуйте папку и представление.
  4. Перезапустите консоль и проверьте названия.

В моём случае, также заметна другая особенность: названия некоторых представлений из пакетов управления, выводятся на русском языке, хотя диструбтив установлен английский:

 

 

Напрашивается мысль о том, что есть некая проблема с "локализацией" и отображением информации из пакетов управления.

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

Поэтому в пакетах управления используется механизм "трансляции" идентификаторов в "названия". По сути в пакете управления этот раздел присутсвует в самом конце и имеет само за себя говоряще название "Language Packs". При отображении любых элементов пакета управления в консоли, Operations Manager просматривает этот раздел в поисках "Display Strings" и отображет "перевод" идентификатора в соответствии с языковыми настройками пользователя. Данная "фича" позволяет автоматически переводить целые пакеты управления на любой язык, поэтому в каталогах часто можно найти языковые пакеты управления, по сути содержащий только блок "Language Pack".

К сожалению, когда используется английский дистрибутив Operations Manager, данный функционал оказывает нам "медвежью услугу". Так как Operations Manager установлен английский, то при создании элементов, они создаются с указанием Language Pack с кодом ENU (то есть английским). В случае внесения изменений - работа выполняется в блоке с кодом RUS. При этом, в случае, когда в пакете присутсвуют обе локализации - по умолчанию всё-таки выводится английская (с кодом ENU). Получается, что мы всегда видим английские строки, но редактировать можем только русские.

Достаточно экспортировать пакет управления, над которым мы делали эксперимент с созданием папок и представлений и посмотреть на последние строки и всё сразу становится на свои места:

 

С причинами разобрались, как разрешить данную проблему? Есть несоклько методов решения.

Вариант 1: корректировка пакетов управления.
Данный метод позволяет внести точечную корректировку путём прямого редактирования пакета управления. Вы можете удалять лишние блоки DisplayStrings или целиком LanguagePack таким образом, чтобы осталось однозначное именование. Обратите внимание, что менять значение IsDefault в данном случае бесполезно. У данного метода есть ряд неудобств, в том числе (1) необходимость прямого редактирования каждого пакета в отдельности, (2) необходимость редактирования после каждого внесения изменения, (3) случайная возможность удалить "нужный" DisplayString.

Вариант 2: изменение языковых настроек пользователя.
Данный метод позволяет срубить проблему под корень. Используя английские языковые настройки, у вас больше не будет создаваться языковых пакетов с кодом RUS. Основной недостаток более чем очевиден - совсем не хочется работать с американскими форматами дат и чисел.

Вариант 3:  Мой коллега Даниель, предложил интересное решение, позволяющее с помощью PowerShell скрипта запускать консоль Operations Manager с английскими языковыми настройками. Данное решение требует определённой дисциплины - все пользователи Operations Manager должны запускать консоль с помощью данного скрипта, чтобы не вносить путаницу с названиями элементов и видеть правильные названия. Получить скрипт можно по данной ссылке (скрипт работает для обоих версий Operations Manager) - https://blogs.technet.com/b/daniels_opsmgr_blog/archive/2012/12/07/forcing-opsmgr-console-to-start-in-english.aspx.

Удачной работы с Менеджером Операций!

Команда System Center PFE Russia.