Опрос информации о принтере с сервера печати Windows

Я пытаюсь разработать способ получения списка принтеров (по крайней мере, имен и IP-адресов) с сервера печати Windows. Я планирую использовать эту информацию на внешнем веб-сайте состояния, управляемом PHP, работающем на веб-сервере Linux, который общается с принтерами индивидуально через SNMP. Связь SNMP уже функционирует. Мне просто нужен способ динамического создания списка принтеров, с которыми он общается, вместо жесткого кодирования всех IP-адресов / имен хостов DNS.

Идея в том, что я делаю это полностью, не касаясь и не меняя сервер (ы) печати, принтеры или соответствующий веб-сервер. Единственное, что находится под моим контролем — это общая, неадминистративная учетная запись CPanel.

Мои исследования привели меня к трем потенциальным возможностям. У меня нет опыта работы с кем-либо из них.

1) команда PHP printer_list, являющаяся частью расширения PECL. На данный момент на нашем веб-сервере не установлено это расширение, и я бы предпочел не делать этот запрос, если я не знаю, что он будет работать для моих целей.

2) Команда lpstat Linux, часть CUPS. Я пытался использовать его для справочной страницы, и кажется, что он просто сидит и ничего не делает. Я не знаю, происходит ли это потому, что он ожидает ответа CUPS, который, как я полагаю, он не получит от сервера Windows, или это может быть проблема с брандмауэром.

3) SMB или WMI-запросы. Я понятия не имею, с чего начать.

Я хотел бы попросить рекомендацию о том, с чего начать. Это был очень тревожный проект для исследования, потому что 90% результатов поиска касаются людей, желающих напечатать. Еще 8% — это люди, опрашивающие локальную систему для получения информации о принтере. Все остальное — черная магия и фирменные корпоративные решения.

Любое понимание очень ценится.
== Мэтт

0

Решение

Я эффективно использую WMI для получения информации о принтере по сети, используя:

Select * FROM Win32_Printer

Начать:

1 — бег wbemtest из окна запуска.

2 — Подключитесь к любой машине, где вы знаете, принтеры настроены.

3 — есть опция запроса, копия Select * FROM Win32_Printer

4 — Шаг 4 вернет вам таблицу, нажмите на Show MOF, он предоставит вам информацию о принтере. Виола, вы сделали.

5 — я использовал C# ManagementObjectSearcher & ManagementObjectCollection и это довольно просто и легко в использовании.

Есть некоторые плюсы и минусы использования WMI. Прочитайте это онлайн.

1

Другие решения

Других решений пока нет …