Имя компьютера/сервера не всегда является достаточно информативным, например, имя «DC01» скажет вам намного меньше, чем «DC: Сайт Москва - GC, FSMO: Schema, RID, PDC».
Поскольку имя компьютера NetBIOS/Hostname имеет ограничения как по длине, так и по набору символов, то для хранения этой дополнительной информации и предназначено поле «Description».
Оно существует как для компьютера, т.е. внутри ОС (System Properties):
Так и для объекта компьютера в Active Directory:
Эта информация важна не только вам, она активно используется программами мониторинга, такими как Microsoft SCOM, Lansweeper и т.д. Хотели бы вы знать, придя утром на работу, что заканчивается место на диске не на сервере «psrv789», а на «Main Office Exchange Mailbox 1»?
Если ваш ответ «да» или хотя бы «было бы не плохо», и ваша виртуальная инфраструктура построена на платформе VMware, то мой скриптCopy-VMNotes2CompDescr.ps1 из PowerCLI-репозитория специально для вас.
В vSphere Client «Notes» находятся в группе ВМ «Annotations»:
В Web Client всё намного проще:
Скрипт использует вспомогательный файл -HelperCsv для предварительного экспорта информации в UNICODE формат для корректного отображения символов других языков, например, русского.
Как вы уже поняли, скрипт берёт ВМ Notes и реплицирует их в ОС и/или AD Description. Это регулируется параметром –TargetEnv, который может принимать значения AD, Local или ALL.
В добавок к самим Notes, в Description добавляется любой, выбранный вами набор символов -CustomString и имя кластера.
Скрипт принимает один или более объектов кластера (Get-Cluster) и возвращает коллекцию объектов со следующими свойствами: ComputerName, Cluster, Env и Notes.
Очень удобно сохранять результат работы скрипта в переменной для последующего анализа следующим образом:
Особого внимания заслуживает свойство Notes, оно содержит сообщение об ошибке в случае её возникновения. Поскольку эти сообщения могут быть довольно длинными, особенно ошибки WMI, генерируемые функцией Get-WmiObject, то свойство Notes будет содержать только первое его предложение. Это сделано при помощи Regex:
В дополнение, скрипт содержит несколько примеров, которые можно просмотреть следующей командой, предварительно перейдя в директорию со скриптом:
cd C:\scripts
Get-Help .\Copy-VMNotes2CompDescr.ps1 –Examples
Все параметры скрипта, кроме параметра -Cluster, являются опциональными и имеют значения по умолчанию, вы можете изменить их на свой вкус. Следующая команда вызовет справку по интересующему вас параметру скрипта:
Полную справку по скрипту, включая примеры, вы можете вызвать следующей командой:
Get-Help .\Copy-VMNotes2CompDescr.ps1 –Full
Важно знать!
1. Скрипт ничего не исправляет и не добавляет в уже существующие Description, он их полностью перезаписывает!
2. ВМ, не имеющие Notes, т.е. свойство Notes пустое, не будут затронуты скриптом. Также не будут затронуты ВМ, имеющие не Windows ОС и содержащие запрещённые символы для NetBIOS/Hostname («_», «/» и т.д.) в имени ВМ.
3. Для работы с AD вам потребуется «Active Directory Module for Windows PowerShell», который является частью RSAT (Remote Server Administration Tools).
4. Скрипт предполагает, что имя ВМ соответствует имени компьютера внутри ОС.
5. Компьютер, с которого вы будете запускать скрипт должен быть в том же домене, что и все ВМ в кластере (если у вас ВМ в разных кластерах относятся к разным доменам, то запускайте скрипт по одному кластеру каждый раз).
6. Пользователь, от имени которого вы будете запускать скрипт, должен иметь административные привилегии как на уровне ОС, так и в AD.
Виртуальная инфраструктура VMware является «живой», т.е. динамической (каждый день появляются новые ВМ, редактируются ВМ Notes, вы даже можете переименовать кластер). Поэтому имеет смысл запускать этот скрипт на регулярной основе, чтобы поддерживать синхронизацию данных виртуальных объектов с реальными.