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

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

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

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

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

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

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

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

Любые идеи очень ценятся. == Мэтт


person mmseng    schedule 23.04.2016    source источник


Ответы (1)


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

Select * FROM Win32_Printer

Начать:

1 - Запустить wbemtest из окна запуска.

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

3 - Есть вариант запроса, скопируйте Select * FROM Win32_Printer

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

5 — я использовал C# ManagementObjectSearcher и ManagementObjectCollection, и это довольно просто и удобно.

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

person Amit Shakya    schedule 23.04.2016
comment
Большое Вам спасибо. Это отличное начало. - person mmseng; 29.04.2016