Войти

Показать полную графическую версию : [решено] Удаление драйвера/устройства из системы скриптом


nickdsl
04-04-2019, 09:04
Всем доброго времени суток.
Задача: автоматизировать управление оргтехникой на предприятии
Проблемные устройства: HP LJ1536DNF
Суть проблемы: развертывание сканеров на ПК пользователей, а также обновление конфигурации (удаление/повторное развертывание).

Если с развертыванием я хоть как то справился за счет подобной статьи: https://nashadmin.ru/obslujivanie-orgteniki-krasnodar/ustanovka-skanera-mfu-hp-laserjet-1536dnf-na-windows-xp/ (что собственно уже довольно неплохо!), но как быть с тем чтобы удалить устройство без подключения по удаленке и беготни до рабочей станции пользователя - вопрос.

К развертыванию я пришел через отслеживание действий установщика HP через программу ProcessMonitor от microsoft и там заметил, что запускается один хитрый бинарник входящий в установочный пакет.
Пробовал провернуть подобную авантюру при процессе удаления устройства. Все что смог найти:
svhost.exe работающий от имени пользователя "система" инициирует процесс DrvInst.exe и с помощью него как то удаляет устройство.
В любом из случаев пользуюсь ли я удалением через HP Installer или через диспетчер устройств всегда svchost.exe порождает процесс DrvInst.exe с такими параметрами командной строки: DrvInst.exe "5" "0" "C:\Windows\System32\DriverStore\FileRepository\hppasc_lj1530.inf_amd64_neutral_0481e7ad62037b2c\hppa sc_lj1530.inf" "0" "42c050f5a" "0000000000000608" "WinSta0\Default"

Собственно я понятия не имею как и чем взаимодействовать с svchost.exe, чтобы запускались подобные процессы.
Если ли у кого либо из Вас идеи как это (удаление устройств и драйверов) реализовать?

Спасибо!

nickdsl
04-04-2019, 10:01
Как зачастую бывает, стоит только написать топик на форум у самого что то да и получится.

Решение через утилиту devcon.exe
Ранее я его встречал и скачивал devcon отдельно, только утилита молчала как партизан при попытке вызова и ничего толком не выходило.
Теперь же я скачал полностью Development Kit и извлек оттуда данную утилиту.
Скачивание и извлечение делал по советам отсюда: https://superuser.com/questions/429016/enable-disable-windows-7-device-via-command-line

Утилиту запускал так: .\devcon /r remove "vid_03f0&pid_012a&IP_SCAN"
Где значение в кавычках это ID оборудования взятое из диспетчера устройств в свойствах любого из однотипных сканеров HP.

Собственно решение такое:
При каждом запуске скрипта (логон) сначала будет запускаться удаление всего и вся, а затем добавление актуальных принтеров.
По-умолчанию принтеры называются одинаково HP Scan Series (и + #2, #3 и так далее если устройств 2,3 и более соответственно).
Это можно поправить поменяв в свойствах поле FriendlyName. Еще не пробовал делать это в скрипте.
Когда получу полное решение опубликую следующим постом.

nickdsl
08-04-2019, 09:45
ЗДЕСЬ (https://www.dropbox.com/s/7mjnf5qmgub22eb/scanner_add.zip?dl=0) zip архив с моего Dropbox т.к. он превышает 1MiB по-другому не вижу возможным поделиться им тут

Описал работу скрипта в его теле настолько, насколько счел это возможным и нужным. Считаю, что там все довольно подробно описано с пояснением почему воспользовался определенными вещами.
Единственная проблема которая сейчас осталась: заставить запускаться данный скрипт через GPO на клиентских ПК под Win10 в то время когда сам контроллер домена W2K8R2.

nickdsl
08-04-2019, 13:09
Под win10 тоже начало работать.
1) Нужно сделать так как написано в данной статье (https://blogs.technet.microsoft.com/canitpro/2015/10/20/step-by-step-managing-windows-10-with-administrative-templates/)
2) Нужно установить последние обновления на Win10

Возможно достаточно было только 2) пункта. Я этого не проверил.
Скрипт теперь успешно работает как под Win7, так и под Win10 через GPO с WinSrv2k8r2




© OSzone.net 2001-2012