Удаление драйвера с помощью powershell
Хотя и редко, у пользователя может возникнуть необходимость срочно высвободить на системном разделе как можно больше места. Воспользовавшись встроенным инструментом очистки cleanmgr, можно удалить не только сугубо временные данные, но и часть системных файлов, например, загруженные обновления или дубликаты драйверов. Последние могут занимать немало места на диске, имели место случаи, когда дубликаты драйверов занимали пять и более процентов от всего дискового пространства.
Штатный чистильщик cleanmgr справляется с этой задачей неплохо, кроме того, в Windows 10 имеется функция автоматического удаления старых пакетов драйверов. Однако, в некоторых случаях встроенные алгоритмы по той или иной причине могут игнорировать драйвера с одинаковыми названиями.
Откуда берутся дубликаты драйверов
Строго говоря, дубликаты драйверов в Windows 10 в сущности таковыми не являются. В данном случае речь идет о драйверах с одинаковыми названиями, но это драйвера разных версий. Так или иначе, все установленные драйвера оказываются в хранилище драйверов и, когда вы обновляете драйвер через Центр обновления Windows или вручную, старая версия остается в хранилище, обеспечивая тем самым возможность отката к предыдущей версии. Вы можете гарантировано и относительно безопасно удалить эти старые версии драйверов, воспользовавшись утилитой Driver Store Explorer или специальным скриптом PowerShell от Вадима Стеркина.
Удаление дубликатов драйверов в Driver Store Explorer
Скачайте архив с утилитой, распакуйте и запустите от имени администратора исполняемый файл Rapr.exe .
Утилита просканирует хранилище драйверов и выведет их список, предварительно отсортировав по типу устройства.
Найдите драйвера с одинаковыми именами (name.inf) , отметьте лишние из них так, чтобы остался только один (последней версии) , а затем нажмите «Удалить» и подтвердите операцию.
Процедура вполне безопасна, даже если вы ошибетесь и отметите не ту версию драйвера, Windows не даст вам его удалить, поскольку он используется системой.
Чтобы удалить такой драйвер, сначала нужно удалить само устройство.
Примечание: удалив из хранилища дубликаты драйверов, вы тем самым сделаете невозможным откат к их предыдущим версиям. Учитывайте этот момент.Удаление дубликатов драйверов скриптом
Скрипт удобен тем, что все выполняемые им действия, во-первых, полностью автоматизированы, во-вторых, он создает бекап удаляемых дубликатов драйверов. Рекомендовать этот инструмент можно даже начинающим пользователям.
Скачайте архив со скриптом (ссылку на ПО найдете внизу статьи) , распакуйте его и откройте файл dupe-drivers.ps1 Блокнотом.
Скрипт создает резервную копию дубликатов драйверов в папку C:\drivers-backup-дата , рекомендуем вместо раздела C использовать пользовательский раздел D.
Замените букву, сохраните скрипт, кликните по нему ПКМ и выберите в меню «Выполнить с помощью PowerShell».
Если скрипт запросит разрешение на исполнение, введите в открывшейся консоли Y и нажмите ввод .
Об остальном скрипт позаботится сам, создав вдобавок на рабочем столе отчет dupe-drivers.tхt о проделанной работе.
Если сценарий не найдет дубликатов, каталог резервной копии создан не будет.
Модуль PowerShell: PrintManagement
Вместе с выходом Windows 8.1 и Windows Server 2012 R2 Microsoft выпустила новую версию PowerShell 4.0 (входит в состав Windows Management Framework 4.0), в котором был существенно расширен список командлетов по управлению сервером печати на базе Windows. Полный список командлетов, по управлению принтерами, драйверами и очередями печати, доступных в модуле PrintManagement на Windows 10 (PoSh v5) можно вывести командой:
Get-Command –Module PrintManagement
В модуле PrintManagement доступны 22 командлета PowerShell для управления принтерами, драйверами, портами печати и очередями:
- Add-Printer – добавить (установить) новый принтер;
- Add-PrinterDriver — установить новый драйвер печати;
- Add-PrinterPort – создать порт печати;
- Get-PrintConfiguration – вывести настройки печати принтера;
- Get-Printer – вывести список принтеров, установленных на компьютере;
- Get-PrinterDriver – вывести список установленных драйверов печати;
- Get-PrinterPort — вывести список портов печати;
Подробную информацию о синтаксисе конкретной команды можно получить так:
Get-Help <имя_командлета > -Detailed
Примеры использования команд:
Get-Help <имя_командлета > -Examples
Рассмотрим несколько примеров типовых сценариев управления принтерами в Windows 10 из PowerShell.
Установка драйвера печати в хранилище драйверов
Чтобы вывести список драйверов печати, который установлены в хранилище драйверов Windows:
Уставим в системе новый драйвер печати, например, HP Universal Printing PCL 6. Согласно документации, команда PowerShell для добавления драйвера должна быть такой:
Add-PrinterDriver -Name "HP Universal Printing PCL 6" -InfPath "C:\Distr\HP-pcl6-x64\hpcu118u.inf"
Однако при попытке установить драйвер подобным образом появляется ошибка:
Оказывается, драйвер из inf файла можно добавить только в том случае, если он уже находится в хранилище драйверов DriverStore (подробнее про хранилище можно почитать здесь). Получается, что с помощью команды Add-PrinterDriver установить драйвер, отсутствующий в хранилище драйверов системы нельзя. Для установки драйвера в DriverStore можно воспользоваться:
-
из предыдущей статьи;
- Утилитой pnputil.exe. Формат такой: pnputil.exe -i -a C:\Distr\HP-pcl6-x64\hpcu118u.inf (установить конкретный драйвер принтера) или pnputil.exe -i -a C:\Distr\HP-pcl6-x64\*.inf (установит все драйвера, найденные в inf файлах указанного каталога);
- Командлетом Add-WindowsDriver, позволяющим интегрировать драйвера в оффлайн образ Windows.
После добавления драйвер принтера в хранилище, необходимо добавить его в список доступных принт-сервере.
Add-PrinterDriver -Name "HP Universal Printing PCL 6"
Установка нового принтера с помощью PowerShell
Создадим ip порт для печати на сетевом принтере (тут можно указать как IP адрес сетевого принтера, так и имя удаленного принт-сервера):
Add-PrinterPort -Name "IP_192.168.10.26" -PrinterHostAddress "192.168.10.26"
Перед добавлением порта вы можете проверить, существует ли он:
$portName = "IP_192.168.10.26"
$checkPortExists = Get-Printerport -Name $portname -ErrorAction SilentlyContinue
if (-not $checkPortExists) Add-PrinterPort -name $portName -PrinterHostAddress "192.168.10.26"
>
С помощью следующей команды мы создадим в системе новый принтер и опубликуем его (откроем к нему общий доступ):
Add-Printer -Name hp2050_Office1_Buh -DriverName "HP Deskjet 2050 J510 series Class Driver" -PortName IP_192.168.10.26 -Shared -ShareName "hp2050_1_BUh" –Published
Чтобы переименовать принтер достаточно выполнить команду:
Rename-Printer -Name "hp2050_Office1_Buh" -NewName " hp2050_Salary"
После выполнения указанных команд в системе появится новый принтер с общим доступом под именем hp2050_Office1_Buh.
Вывод списка принтеров на сервере печати с помощью PowerShell
Выведем полный список принтеров, установленных на данном компьютере:
Как вы видите, команда показывает имя принтера, тип (локальный или сетевой), драйвер, порт печати, открыт ли к принтеру общий доступ и опубликован ли принтер в AD.
Большинство командлетов модуля PrintManagement можно использовать для просмотра состояния и управления принетрами, драйверами и очередями печати на удаленных компьютерах. Имя удаленного компьютера или сервера указывается в качестве аргумента параметра –ComputerName.
С помощью PowerShell вы можете получить информацию об установленных принтерах на удаленном компьютере (принт-сервере), для этого выполните команду:
Get-Printer -ComputerName msk-prnt1 | Format-List Name,DriverName
Чтобы вывести только список принтеров с общим доступом, используйте команду:
Get-Printer -ComputerName msk-prnt1 | where Shared -eq $true | fl Name
Подключение сетевого принтера из PowerShell
Чтобы подключить принтер с сервера печати, используйте команду:
Add-Printer -ConnectionName \\msk-prnt1\HPCL3020
Windows 10 использует последний принтер, на который выполнялась печать в качестве принтера по умолчанию, если вы хотите использовать фиксированный принтер по-умолчанию, выполните команду:
Set-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows" -Name "LegacyDefaultPrinterMode" -Value 1 –Force
Чтобы установить принтер по-умолчанию используйте следующие команды:
Удаление принтера с помощью PowerShell
Чтобы удалить принтер, нужно выполнить такую команду PowerShell:
Remove-Printer -Name "hp2050_Office1_Buh"
Вы можете удалить конкретный драйвер при помощи командлета Remove-PrinterDriver:
Командлет Remove-кмдривер удаляет драйвер устройства из каталога драйверов. На источник не влияет.
Выполните командлеты Configuration Manager на диске сайта Configuration Manager, например PS XYZ:\> . Дополнительные сведения см. в разделе Приступая к работе.
EXAMPLES
Пример 1. Удаление драйвера, указанного в объекте драйвера
Первая команда получает объект Driver с именем Driver01 и сохраняет объект в переменной $Driver.
Вторая команда удаляет драйвер, хранящийся в $Driver. Указание параметра Force указывает, что пользователю не выдается запрос перед удалением драйвера.
Пример 2. Удаление драйвера с помощью конвейера
Эта команда получает объект Driver с именем Driver02 и использует оператор конвейера для передачи объекта в Remove-кмдривер, который удаляет объект Driver. Указание параметра Force указывает, что пользователю не выдается запрос перед удалением драйвера.
PARAMETERS
-Confirm
Запрос подтверждения перед выполнением командлета.
-Дисаблевилдкардхандлинг
Этот параметр обрабатывает подстановочные знаки как значения литеральных символов. Его нельзя объединить с форцевилдкардхандлинг.
-Force
Принудительное выполнение команды без запроса на подтверждение пользователем.
-Форцевилдкардхандлинг
Этот параметр обрабатывает символы-шаблоны и может привести к непредвиденному поведению (не рекомендуется). Его нельзя объединить с дисаблевилдкардхандлинг.
Указывает идентификатор драйвера.
-InputObject
Указывает объект драйвера. Чтобы получить объект драйвера, используйте командлет Get-кмдривер .
Указывает имя драйвера.
-WhatIf
Показывает, что произойдет при запуске командлета. Командлет не выполняется.
Общие параметры
Этот командлет поддерживает общие параметры: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction и -WarningVariable. См. сведения в разделе about_CommonParameters.
Как известно, в Windows драйверы хранятся в папке
Диспетчер устройств вам в помощь
Он умеет многое. Но перед удалением драйверов к конкретным устройствам не торопитесь. Часть из них от вас скрыта. Запустите консоль команд от имени администратора и наберите команду
Это откроет глазу скрытые устройства, неподключенные в данный момент. Консоль ничего не ответит, но изменения вступят в силу немедленно. Теперь удаляйте.
Как удалить ненужные драйверы в Windows 7?
Перед удалением можно взглянуть на список имеющихся драйверов в текстовом формате. Запускаем консоль от имени администратора и вводим:
В корне диска С: вы обнаружите одноимённый файл, который я как всегда предлагаю вам открыть при помощи более продвинутого блокнота Notepad++ с настроенной кириллицей.
Если что-то непонятно или не получается, попробуйте более современные подходы, описанные ниже.
Как удалить ненужные драйверы в Windows 10?
В ОС Windows нового поколения удалить старые драйверы стало возможным и с помощью графической утилиты Очистка диска (cleanmgr.exe). Хотя способ через консоль также доступен. В строке поиска начните вводить название утилиты и запустите ту от имени администратора
Удаляйте. процедура полезная, но не быстрая.
Как удалить старые драйверы при помощи PowerShell.
Здесь всё просто:
- качаем скрипт
- распаковываем, Разблокируем во вкладке Безопасность по необходимости
- запускаем среду Powershell и вводим команду запуска неподписанных скриптов
- нажмите Y, чтобы согласиться
- теперь запускаем сам скачанный файл, указав на путь хранения (у вас он будет свой):
А программы для удаления драйверов есть?
Есть. Вот некоторые из них:
Справляются они с проблемами с переменным успехом, так что читайте отзывы. Последние две мне пару раз пригодились. Отписывайтесь, как у кого прошло и сработало ли. У меня всё. Успехов.
Драйверы устройств являются важнейшей составляющей рабочего компьютера, так как они помогают управлять системой. Хотя, можно установить, удалить или обновить драйверы через диспетчер устройств, этот инструмент не дает нам полного списка и технических деталей об установленных драйверах в системе Windows.
Для получения полного описания установленных драйверов, можно использовать PowerShell. Get-WindowsDriver в PowerShell выводит основную информацию драйверах; как для сторонних драйверов, так и для установленных по умолчанию.
Получить список драйверов с помощью PowerShell
- Нажмите Win + Q и введите Windows PowerShell в поле поиска. В результатах поиска щелкните правой кнопкой мыши на Windows PowerShell и выберите Запуск от имени администратора.
Вот как можно изменять параметры (показаны в [ . ]), согласно вашем ожиданиям:
- 1 = только ошибки
- 2 = ошибки и предупреждения
- 3 = ошибки, предупреждения и информация
- 4 = вся информация, указанная выше, и отладочный вывод
Например, чтобы получить получает подробные сведения о USB.inf драйвере включенном в образ Windows, используйте эту команду:
Например, чтобы найти загрузчик bootmgr фалов на С:, когда вы работаете в PowerShellс диска D: , используйте этот командлет:
Таким образом, Вы можете получить подробную информацию о драйверах в вашей системе, в различных ситуациях. Надеюсь, вы найдете это руководство полезным!
Читайте также: