В мире компьютерных технологий драйверы играют роль переводчиков между операционной системой и аппаратным обеспечением. Они позволяют вашему ПК правильно взаимодействовать с видеокартой, звуковой картой, сетевым адаптером и множеством других устройств. Хотя большинство пользователей предпочитают обновлять драйверы через графический интерфейс операционной системы или специальные утилиты производителей, существует мощный и гибкий способ сделать это через командную строку. Этот метод особенно полезен для системных администраторов, энтузиастов, которые хотят автоматизировать процессы, или в случаях, когда графический интерфейс недоступен.
В этой статье мы подробно рассмотрим, как обновить драйверы через командную строку, используя различные инструменты и подходы.
Почему стоит обновлять драйверы через командную строку?
- Автоматизация: Возможность скриптовать процесс обновления драйверов позволяет автоматизировать задачи на множестве компьютеров, экономя время и усилия.
- Удаленное управление: Командная строка идеально подходит для удаленного администрирования серверов и рабочих станций.
- Точный контроль: Вы можете точно указать, какие драйверы обновлять и как это делать, избегая нежелательных изменений.
- Диагностика: В некоторых случаях, ошибки при обновлении драйверов через графический интерфейс могут быть более информативными при анализе через командную строку.
- Работа в ограниченных средах: Если графический интерфейс Windows не загружается, командная строка может стать единственным способом восстановить работоспособность системы.
Основные инструменты для обновления драйверов через командную строку
В Windows существует несколько основных инструментов, которые позволяют управлять драйверами через командную строку:
- PNPUTIL (Plug and Play Utilities): Это мощный инструмент, который позволяет управлять драйверами устройств, установленными в системе. Он может добавлять, удалять и перечислять драйверы.
- DEVCON (Device Console): Это утилита командной строки, которая является частью пакета Windows Driver Kit (WDK). Она предоставляет более широкий спектр возможностей для управления устройствами и их драйверами, чем PNPUTIL.
- PowerShell: Современная оболочка командной строки и язык сценариев, который предлагает мощные cmdlets для управления системой, включая работу с драйверами.
Обновление драйверов с помощью PNPUTIL
PNPUTIL является наиболее доступным и часто используемым инструментом для управления драйверами через командную строку в Windows.
1. Добавление нового драйвера:
Прежде чем обновлять драйвер, вам нужно добавить его в хранилище драйверов Windows. Для этого используется команда pnputil /add-driver.
pnputil /add-driver <путь_к_файлу_inf> /install
- <путь_к_файлу_inf>: Укажите полный путь к файлу .inf драйвера, который вы хотите установить.
- /install: Этот параметр автоматически установит драйвер для всех совместимых устройств.
Пример:
pnputil /add-driver C:\Drivers\MyVideoCard\nv_disp.inf /install
2. Перечисление установленных драйверов:
Чтобы узнать, какие драйверы установлены в системе, используйте команду pnputil /enum-drivers.
pnputil /enum-drivers
Эта команда выведет список всех драйверов, включая их издателя, дату, версию и путь к файлу .inf.
3. Удаление драйвера:
Если вам нужно удалить драйвер, вы можете использовать команду pnputil /delete-driver. Вам потребуется указать полный путь к файлу .inf драйвера, который вы хотите удалить.
pnputil /delete-driver <путь_к_файлу_inf> /uninstall /force
- <путь_к_файлу_inf>: Полный путь к файлу .inf драйвера.
- /uninstall: Удаляет драйвер из хранилища.
- /force: Принудительно удаляет драйвер, даже если он используется. Будьте осторожны с этим параметром.
4. Обновление драйвера (косвенно):
PNPUTIL не имеет прямой команды для "обновления" драйвера в том смысле, как это делает графический интерфейс. Вместо этого, вы удаляете старый драйвер и устанавливаете новый.
Шаги для обновления драйвера с помощью PNPUTIL:
- Найдите файл .inf нового драйвера. Обычно он находится в папке с распакованными драйверами от производителя.
- Удалите старый драйвер (если необходимо). Используйте pnputil /delete-driver с соответствующими параметрами. Это может быть полезно, если вы хотите полностью очистить систему от предыдущей версии. Однако, в большинстве случаев, простое добавление нового драйвера с параметром /install приведет к его обновлению, если новый драйвер имеет более высокую версию или является более подходящим.
3. Добавьте и установите новый драйвер:
```bash
pnputil /add-driver <путь_к_файлу_inf_нового_драйвера> /install
```
Система автоматически определит, является ли новый драйвер более подходящим для устройства, и установит его. Если устройство уже использует более новую или идентичную версию, драйвер может не быть обновлен.
Обновление драйверов с помощью DEVCON
DEVCON - это более мощный инструмент, который предоставляет детальный контроль над устройствами и драйверами. Он не входит в стандартную поставку Windows и требует загрузки из Windows Driver Kit (WDK) или Windows SDK.
1. Установка DEVCON:
- Загрузите и установите Windows Driver Kit (WDK) или Windows SDK.
- DEVCON будет находиться в папке C:\Program Files (x86)\Windows Kits\10\Tools\x64 (для 64-битной версии) или аналогичной.
- Скопируйте devcon.exe в папку, которая находится в переменной среды PATH (например, C:\Windows\System32), или используйте полный путь к исполняемому файлу.
2. Перечисление устройств:
Прежде чем обновлять драйвер, вам нужно идентифицировать устройство.
devcon find *
devcon findall *
- devcon find *: Перечисляет все устройства, которые в данный момент присутствуют в системе.
- devcon findall *: Перечисляет все устройства, включая те, которые были когда-то подключены, но сейчас отсутствуют.
Вы можете использовать фильтры для поиска конкретных устройств:
devcon find PCI\*
devcon find @PCI\VEN_10DE&DEV_1C8C* (Пример для конкретной видеокарты NVIDIA)
3. Обновление драйвера для конкретного устройства:
DEVCON позволяет обновить драйвер для конкретного устройства, указав его аппаратный ID или совместимый ID.
devcon update <путь_к_файлу_inf> <аппаратный_ID_устройства>
- <путь_к_файлу_inf>: Полный путь к файлу .inf нового драйвера.
- <аппаратный_ID_устройства>: Аппаратный ID устройства, для которого вы хотите обновить драйвер. Вы можете получить его с помощью devcon find или из Диспетчера устройств (Свойства устройства -> Сведения -> ИД оборудования).
Пример:
Предположим, у вас есть новый драйвер для видеокарты в C:\Drivers\NVIDIA\nv_disp.inf, и аппаратный ID вашей видеокарты @PCI\VEN_10DE&DEV_1C8C&SUBSYS_118110DE&REV_A1.
devcon update C:\Drivers\NVIDIA\nv_disp.inf @PCI\VEN_10DE&DEV_1C8C&SUBSYS_118110DE&REV_A1
4. Перезагрузка устройства:
Иногда после обновления драйвера требуется перезагрузить устройство, чтобы изменения вступили в силу.
devcon restart <аппаратный_ID_устройства>
Пример:
devcon restart @PCI\VEN_10DE&
devcon restart @PCI\VEN_10DE&DEV_1C8C&SUBSYS_118110DE&REV_A1
Обновление драйверов с помощью PowerShell
PowerShell предлагает более современный и гибкий подход к управлению драйверами, используя cmdlets.
1. Перечисление устройств и драйверов:
Для начала, вы можете получить список устройств и их драйверов.
Get-PnpDevice
Get-PnpDevice -Class "Display" # Фильтр по классу устройств
Get-PnpDeviceProperty -KeyName "DEVPKEY_Device_DriverVersion" # Получить версии драйверов
2. Поиск драйверов в хранилище:
Вы можете просмотреть драйверы, которые уже находятся в хранилище драйверов Windows.
Get-WindowsDriver -Online
3. Установка нового драйвера (добавление в хранилище):
PowerShell не имеет прямого cmdlet для "обновления" драйвера в том же смысле, что и графический интерфейс. Вместо этого, вы добавляете новый драйвер в хранилище, и система автоматически выбирает наиболее подходящий.
Add-WindowsDriver -Path "C:\Drivers\MyNewDriver" -Online
- -Path: Указывает путь к папке, содержащей файл .inf драйвера. PowerShell автоматически найдет все .inf файлы в этой папке и ее подпапках.
- -Online: Применяет изменения к текущей работающей системе.
4. Обновление драйвера для конкретного устройства (косвенно):
Хотя нет прямого cmdlet Update-PnpDriver, вы можете использовать комбинацию Get-PnpDevice и Update-PnpDevice (или Disable-PnpDevice / Enable-PnpDevice) для принудительного пересканирования и установки лучшего драйвера.
Сценарий 1: Принудительное пересканирование и установка лучшего драйвера:
Если вы добавили новый драйвер в хранилище с помощью Add-WindowsDriver, вы можете принудительно заставить устройство пересканировать доступные драйверы.
# Получаем устройство по его Instance ID (можно найти через Get-PnpDevice)
$device = Get-PnpDevice -InstanceId "PCI\VEN_10DE&DEV_1C8C&SUBSYS_118110DE&REV_A1\4&12345678&0&0008"
# Отключаем и включаем устройство, чтобы оно пересканировало драйверы
Disable-PnpDevice -InstanceId $device.InstanceId -Confirm:$false
Enable-PnpDevice -InstanceId $device.InstanceId -Confirm:$false
Сценарий 2: Использование Update-PnpDevice (для устройств, которые могут быть обновлены):
Некоторые устройства могут быть обновлены напрямую, если новый драйвер уже находится в хранилище.
# Получаем устройство
$device = Get-PnpDevice -FriendlyName "NVIDIA GeForce RTX 2080 Ti"
# Обновляем драйвер для этого устройства
Update-PnpDevice -InstanceId $device.InstanceId
Этот cmdlet заставит систему проверить наличие более нового или подходящего драйвера для указанного устройства в хранилище драйверов.
5. Удаление драйвера:
Remove-WindowsDriver -Driver "oemXX.inf" -Online
- -Driver: Укажите имя файла .inf драйвера в хранилище (например, oem12.inf). Вы можете найти его с помощью Get-WindowsDriver -Online.
Общие рекомендации и лучшие практики
- Резервное копирование: Перед любыми манипуляциями с драйверами, особенно через командную строку, настоятельно рекомендуется создать точку восстановления системы или полное резервное копирование. Это позволит вам легко откатиться в случае возникновения проблем.
- Используйте полные пути: При указании путей к файлам драйверов (.inf) всегда используйте полные пути, чтобы избежать ошибок.
- Запускайте командную строку от имени администратора: Все команды, связанные с управлением драйверами, требуют повышенных привилегий. Запускайте "Командную строку" или "PowerShell" от имени администратора.
- Изучите документацию производителя: Перед установкой драйверов из командной строки, ознакомьтесь с документацией производителя вашего оборудования. Там могут быть специфические инструкции или рекомендации.
- Тестируйте на одном устройстве: Если вы автоматизируете процесс обновления драйверов для множества компьютеров, сначала протестируйте скрипт на одном или нескольких тестовых машинах, чтобы убедиться в его корректной работе.
- Понимание аппаратных ID: Для более точного управления устройствами с помощью DEVCON и PowerShell, важно понимать структуру аппаратных ID. Они уникально идентифицируют каждое устройство в системе.
- Версии драйверов: При обновлении драйверов через командную строку, система обычно выбирает драйвер с наивысшей версией, который совместим с устройством. Однако, в редких случаях, может потребоваться явное указание версии или удаление старого драйвера перед установкой нового.
- Перезагрузка: После установки или обновления драйверов, часто требуется перезагрузка компьютера для полного применения изменений. Убедитесь, что ваш скрипт включает команду перезагрузки, если это необходимо.
- Проверка после обновления: После завершения процесса обновления, проверьте работоспособность устройства через Диспетчер устройств или соответствующее приложение.
Примеры сценариев использования
1. Автоматическое обновление драйверов видеокарты на сервере:
Предположим, у вас есть сервер с несколькими видеокартами NVIDIA, и вы хотите установить последнюю версию драйвера.
- Шаг 1: Скачайте драйверы NVIDIA. Распакуйте их в папку, например, C:\NVIDIA_Drivers.
- Шаг 2: Найдите файл .inf драйвера. Обычно это nv_disp.inf или подобный.
- Шаг 3: Используйте PNPUTIL для установки.pnputil /add-driver C:\NVIDIA_Drivers\nv_disp.inf /install
- Шаг 4: Перезагрузите сервер.
2. Удаленное обновление драйвера сетевого адаптера на рабочей станции:
Вы можете использовать PowerShell для удаленного обновления драйвера сетевого адаптера.
- Шаг 1: Скачайте драйвер сетевого адаптера и распакуйте его в общую папку, доступную с удаленной машины, например, \\FileServer\Drivers\NetworkAdapter.
- Шаг 2: Используйте PowerShell Remoting.Invoke-Command -ComputerName RemotePC -ScriptBlock {
Add-WindowsDriver -Path "\\FileServer\Drivers\NetworkAdapter" -Online
Restart-Computer -Force
}
RemotePC - имя удаленного компьютера.
\\FileServer\Drivers\NetworkAdapter - путь к папке с драйверами.
3. Диагностика проблем с драйвером звуковой карты:
Если у вас возникли проблемы со звуком, вы можете попробовать переустановить драйвер звуковой карты через командную строку.
- Шаг 1: Найдите аппаратный ID вашей звуковой карты с помощью devcon find @*audio* или в Диспетчере устройств.
- Шаг 2: Удалите текущий драйвер (если это необходимо и вы уверены в своих действиях).devcon remove @<аппаратный_ID_звуковой_карты>
- Шаг 3: Установите новый драйвер (предварительно скачанный и распакованный).pnputil /add-driver C:\Drivers\SoundCard\snd_drv.inf /install
- Шаг 4: Перезагрузите компьютер.
Заключение
Обновление драйверов через командную строку - это мощный инструмент, который открывает новые возможности для автоматизации, удаленного управления и точного контроля над вашей системой. PNPUTIL, DEVCON и PowerShell предоставляют различные подходы к этой задаче, каждый со своими преимуществами. Понимание этих инструментов и следование лучшим практикам позволит вам эффективно управлять драйверами, обеспечивая стабильную и оптимальную работу вашего оборудования. Помните, что с большой силой приходит большая ответственность, поэтому всегда действуйте осторожно и делайте резервные копии перед внесением ственными изменениями в систему.