Во-первых, я не уверен, что это правильная форма, но мне показалось, что она лучше всего подходит.
Для проекта автоматизации управления я пытаюсь идентифицировать блоки питания на серверах в моей сети. В настоящее время я делаю это с помощью сценария PowerShell. Я пробовал использовать Get-WmiObject с классами CIM_PowerSupply, CIM_UninturruptiblePowerSupply и Win32_Battery, но каждый из них возвращает пустую коллекцию.
Является ли такое поведение нормальным для этих команд, и если да, могут ли какие-либо другие интерфейсы запрашиваться для этого оборудования?
Серверы, по крайней мере, те, к которым я привык, HP и Dell часто имеют встроенный интерфейс для отдельной сети управления. В HP это называется iLO (встроенное отключение света). Dell - это iDRAC. Идея состоит в том, что они подключаются через Ethernet к IP-сети, но обычно отдельно от производственной сети, либо с помощью vlan, либо путем физического разделения. Эти интерфейсы управления предоставляют доступ к диагностике оборудования, настройкам BIOS и возможность удаленного просмотра процесса POST. Это часто включает в себя возможность смонтировать ISO-образ или удаленный загрузочный носитель и использовать его для запуска сервера, не находясь с ним в комнате, теоретически из любого места в Интернете.
Однако эти интерфейсы не часто доступны внутри операционной системы самого сервера, если вы не используете систему управления. Объекты WMI, которые вы пытаетесь использовать, относятся к объектам ИБП, где ИБП подключен к серверу через выделенное соединение, например USB-кабель. Назначение этого соединения - сигнализировать серверу о завершении работы при заданном условии.
Итак, краткий ответ: да, поведение нормальное, если к вашей системе не подключен ИБП.
Чтобы собрать необходимую информацию, вы, вероятно, захотите обратиться к любой системе управления, доступной на ваших серверах, если таковая имеется. В противном случае вы можете получить информацию из счетов или провести инвентаризацию, если все, что вам нужно, это спецификации источников питания.