Скрипт PowerShell для переустановки принтера и установки его по умолчанию, если он был по умолчанию

Вопрос или проблема

У нас на работе есть принтер, который вызывает проблемы. Мы пробовали несколько разных решений, но когда пользователь пытается распечатать на этом принтере, Windows 7 иногда отображает что-то вроде:

Windows необходимо загрузить и установить драйвер программного обеспечения с … компьютера

Однако на ПК уже установлен правильный драйвер. Я пытался изменить несколько настроек в нашей групповой политике в соответствии с решениями, которые появились, когда я искал эту проблему, но пока ничего не сработало. Пока что, я думаю, будет лучше, если Windows будет переустанавливать принтер каждый раз, когда пользователь входит в систему.

Я хочу установить принтер как принтер по умолчанию только если пользователь уже устанавливал его как принтер по умолчанию. Как я могу сделать это с помощью PowerShell?

Это можно сделать с помощью WMI, используя класс Win32_Printer. Ниже приведен пример с использованием PowerShell, вы также можете сделать это на vbscript.

Вы можете адаптировать приведенный ниже скрипт под свои нужды. В примере предполагается, что драйвер называется “TOSHIBA e-STUDIO3510cSeriesPCL6”

$driver_name="TOSHIBA e-STUDIO3510cSeriesPCL6"

$printers = Get-WmiObject -Class win32_printer -Filter "DriverName="$driver_name""

foreach ($printer in $printers) { 

    $printer.Delete()

    $return_status = (Invoke-WmiMethod -Class win32_printer -Name AddPrinterConnection -ArgumentList $printer.Name).ReturnStatus

    If ($return_status -eq 0 -and $printer.Default) { 

        (Get-WmiObject -Class win32_printer -Filter "Name="$($printer.Name)"").SetDefault() 
    }
}

Что делает этот скрипт, так это запрашивает, какие принтеры используют определенный драйвер, и переустанавливает их, сохраняя статус принтера по умолчанию, если это необходимо.

Ответ или решение

Для решения вашей проблемы с принтером в Windows 7, можно использовать PowerShell для переустановки принтера и восстановления его статуса по умолчанию, только если он был установлен как принтер по умолчанию. Привожу полный скрипт, который выполняет необходимые действия:

# Задайте название драйвера вашего принтера
$driver_name = "TOSHIBA e-STUDIO3510cSeriesPCL6"

# Получаем список принтеров, которые используют указанный драйвер
$printers = Get-WmiObject -Class win32_printer -Filter "DriverName='$driver_name'"

# Перебираем все найденные принтеры
foreach ($printer in $printers) {
    # Удаляем принтер
    $printer.Delete()

    # Пытаемся заново подключить принтер
    $return_status = (Invoke-WmiMethod -Class win32_printer -Name AddPrinterConnection -ArgumentList $printer.Name).ReturnStatus

    # Проверяем, была ли добавлена принтер и был ли он по умолчанию
    if ($return_status -eq 0 -and $printer.Default) {
        # Устанавливаем принтер по умолчанию (если это необходимо)
        (Get-WmiObject -Class win32_printer -Filter "Name='$($printer.Name)'").SetDefault()
    }
}

Пояснение к скрипту:

  1. Задание имени драйвера: В первой строке вы задаете название драйвера, который соответствует вашему принтеру.

  2. Получение списка принтеров: Команда Get-WmiObject извлекает список установленных принтеров, отфильтрованный по заданному драйверу.

  3. Цикл обработки принтеров: Используя цикл foreach, мы перебираем каждый принтер из полученного списка.

  4. Удаление принтера: Метод .Delete() удаляет принтер из системы.

  5. Переустановка принтера: Используется метод AddPrinterConnection, чтобы заново подключить принтер.

  6. Проверка статуса и установка по умолчанию: Если принтер успешно добавлен и ранее был установлен по умолчанию, его статус восстанавливается с помощью метода .SetDefault().

Инструкции по запуску скрипта:

  1. Откройте PowerShell с правами администратора.
  2. Вставьте скрипт, заменив TOSHIBA e-STUDIO3510cSeriesPCL6 на имя вашего драйвера, если оно отличается.
  3. Запустите скрипт.

Этот скрипт решит вашу проблему с принтером, позволяя ему переустанавливаться при каждом входе пользователя и восстанавливать статус по умолчанию, если он был настроен на это ранее.

Оцените материал
Добавить комментарий

Капча загружается...