Мне нужно создать список компьютеров в сети, который также сообщит мне, какие принтеры установлены на каждой машине. Затем мне нужно будет дополнительно отфильтровать только те, которые являются локальными драйверами, и дополнительно отфильтровать локально подключенные принтеры (USB или параллельный)
Все компьютеры являются частью смешанного режима Microsoft ADS 2003. Клиенты варьируются от Win2k до Win7.
Можно ли создать сценарий? Есть ли для этого бесплатные инструменты? Есть ли платные инструменты, которые могут собирать такую информацию?
дополнительная проблема включает в себя то, как часто мне нужно сканировать сеть на предмет изменений и т. д.
Это лишь частичное решение, так как оно ничего вам не скажет о драйверах. Я собираю информацию о принтере с помощью сценария входа в систему (VBS). Соответствующая часть:
objOutputFile.WriteLine "Printers:"
objOutputFile.WriteLine "========="
set objPrinters = objNetwork.EnumPrinterConnections
For i = 0 to objPrinters.Count - 1 Step 2
objOutputFile.WriteLine "Port " & objPrinters.Item(i) & " = " & objPrinters.Item(i+1)
Next
set objPrinters = Nothing
Пока локальные принтеры можно определить по порту. Работает на XP, Server 2003 и Win7, и у меня нет причин думать, что он не будет работать на всех версиях Windows на базе NT.
На предыдущей работе я использовал части инструмента с открытым исходным кодом под названием Открытый аудит для заполнения базы данных обо всех ПК с Windows в локальной сети. Open-AudIT использует WMI для инвентаризации оборудования и программного обеспечения Windows, поэтому он довольно тщательный. Я совершенно уверен, что он может сделать то, о чем вы просили.
Только одно предостережение. Прошло несколько лет с тех пор, как я его использовал, и в то время в программном обеспечении все еще были некоторые неровности. Плюс в том, что это открытый исходный код, и я смог заставить его делать то, что мне было нужно, всего лишь немного изменив код. Похоже, что проект все еще жив, так что с тех пор он, вероятно, улучшился.