Массовое изменение настроек принтера по умолчанию

На нашем сервере печати Server 2008 R2 у нас ~30 принтеров HP (некоторые CM3530, M4345 и CP3525), и меня попросили перевести всю печать на двустороннюю, а для цветных принтеров - в оттенки серого. Есть ли сценарий powershell или хитрость cmd-line, или мне нужно пройти через настройки каждого принтера и изменить его вручную?

7 ответов

Решение

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

На самом деле новые драйверы HP v5.6.0 с их драйверами печати " HP Universal PS " и " HP Universal PCL 6 " поставляются с утилитой под названием " HP Driver Config Util ", которая позволяет изменять файл CFG в папке установки драйвера таким образом, чтобы любой очередь, измененная на этот драйвер, получает указанные вами настройки. Вы также можете заблокировать настройки, чтобы пользователи не могли вносить ненужные изменения.

Скачать

-John

Setprinter.exe может сделать это, по крайней мере, для драйверов принтеров HP.

http://windowsitpro.com/windows/jsi-tip-9675-setprinterexe-command-line-tool-set-configurations-or-states-local-or-remote-pr

Вот копия сценария PS, который использует команду set printer для изменения цвета на BW:

$TargetHost = "printservernamehere"
$list = get-wmiobject -ComputerName $TargetHost -class win32_printer
$i = 1

Foreach ($printer in $list) {
    $name = $printer.name
    Write-host("Working on " + $name + " (#" + $i++ + " of " + $list.Count + ")")
    setprinter \\$TargetHost\$name 8 "pdevmode=dmcolor=1"
}

Первое место, которое я бы посмотрел, это:

HKLM\SYSTEM\CurrentControlSet\Control\Print\Printers

Здесь вы найдете индивидуальную информацию о конфигурации для каждой очереди, установленной на машине. Каждый ключ будет содержать как минимум эти три подраздела:

DsDriver

DsSpooler

PrinterDriverData

Первое и третье - это то, на что вы хотите взглянуть. Некоторые драйверы будут кешировать здесь много информации о конкретной модели, чтобы сэкономить время и использовать меньше сетевых ресурсов.

Тем не менее, я думаю, что специфичные для функции настройки, которые вы получаете из "Печать по умолчанию", управляются на уровне драйвера. Однако большинство принтеров используют SNMP для автоматического получения / установки этой информации. Вы также можете найти записи реестра, разбросанные по всему реестру и содержащие кешированную информацию, которая полезна здесь.

Удачи!

setprinter.exe доступен для загрузки по адресу https://setuserprinter.sourceforge.net/ и может использоваться для настройки такого типа. Я использую его уже много лет для развертывания принтеров на удаленных серверах и установки настроек драйверов, таких как лоток для бумаги по умолчанию. Работает хорошо, но есть нюанс: его необходимо установить на компьютер или сервер, на котором вы будете его использовать.

Сообщение Доуна кажется правильным в их использовании, но настройки будут различаться в зависимости от драйвера принтера и производителя. Использование setprinter.exe -show [имя принтера] [уровень](где уровень — это значение от 0 до 9) отобразит текущие настройки. Я рекомендую отобразить настройки, внести изменения, а затем сравнить настройки, чтобы увидеть, сохраняются ли эти настройки таким образом. Некоторые принтеры используют файлы реестра или конфигурации для хранения своих настроек и не отображают информацию.

Ответ от Доуна не сработал. Команда тоже не setprinterи любые ссылки показывают "Set-Printer". Кажется, что было бы лучше отредактировать реестр в этот момент.

https://technet.microsoft.com/en-us/library/hh918361(v=wps.630).aspx (Set-PrintConfiguration) https://technet.microsoft.com/en-us/library/hh918366(v=wps.630).aspx (Set-Printer)

Мне не повезло с Set-Printer, но сблизился с Set-PrintConfiguration,

       #Set object to desired printer's print config
    $PrintConfiguration = Get-PrintConfiguration –PrinterName "Printer Name Here"
       #Set color to false
    $PrintConfiguration.Color = $false
       #Apply the changes
    Set-PrintConfiguration –InputObject $PrintConfiguration

Вы можете использовать часть ответа Доуна, чтобы получить список принтеров, а затем выполнить цикл (чтобы программно ввести имя принтера). Имя будет в собственности Name,

$PrinterList = get-wmiobject -ComputerName $TargetHost -class win32_printer

Проблема с этим подходом состоит в том, что он отключает цвет все вместе, из того, что я могу собрать. Это также не работает для моего драйвера PCL, только PS. При проверке свойств / предпочтений принтера все равно будет отображаться значение по умолчанию "Автоцвет" (или отключение цвета не будет отображаться). По крайней мере, если вы хотите запретить пользователям печатать цвета, это может помочь.

Другие вопросы по тегам