Экспорт WMI в JSON на PowerShell с произвольным именованием полей

Powershell WMI JSON

Появилась задача мониторить в Zabbix список зон доменов, с которыми настроены доверительные отношения. Поскольку зон было довольно много хотелось получить их список как-то автоматически чтобы использовать правила автообнаружения.

На просторах интернета нашел простой скрипт как получить список зон на powershell с помощью WMI, добавил из другого решения переименование полей (ссылки на оригинал в конце статьи).

Заметку сохраняю здесь для себя и тех, кому это может быть так же полезно.

$DNSServer = "DC01"
$Zones = Get-WMIObject -Computer $DNSServer -Namespace "root\MicrosoftDNS" -Class "MicrosoftDNS_Zone"
write '{ "data":'

$Zones | Select-Object -property @{N='{#ZONENAME}';E={$_.Name}},ZoneType | where {$_.ZoneType -eq "4"} | ConvertTo-Json
write '}'

Данный скрипт получает имя зоны условной пересылки (ZoneType 4) домена с которым настроены доверительные отношения. Выводит данные в Json формате и поле сразу помечается макросом автообнаружения. Далее этот скрипт размещается на контроллере домена и настраивается в конфигурационном файле агента пользовательский параметр для автообнаружения.

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


net.dns[{HOST.IP},{#ZONENAME},NS,2,1]

Так же создается соответствующий ему прототип тригера сигнализирующий о том, что данная зона не резолвится на контроллере домена :

DNS Zone {#ZONENAME} not resolving on {HOSTNAME}

last(/tmn-sts-dc01.id-suenco.ru/net.dns[{HOST.IP},{#ZONENAME},NS,2,1],#3)=0

Решение не самое правильно и элегантное, было придумано и сделано на коленке для быстрого решения поставленной задачи. Минусов тут несколько. На каждый контроллер домена нужно разместить скрипт и произвести настройку и перезапуск агента. Можно сделать все то же самое без скрипта с использованием запроса непосредственно с Zabbix сервера что-то вроде такого.

wmi.getall[root\MicrosoftDNS,select * from MicrosoftDNS_Zone  where ZoneType = '4']

На основе этого запроса производится автоматическое обнаружения и создание элементов без необходимости установки скриптов и настройки агентов на серверах. Но об этом в другой статье.

Источники:

Оцените статью
Добавить комментарий

Внимание! Нажимая кнопку "Отправить комментарий" вы соглашаетесь с политикой конфиденциальности сайта.