Массовое изменение настроек принтера по умолчанию
На нашем сервере печати 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.
Вот копия сценария 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. При проверке свойств / предпочтений принтера все равно будет отображаться значение по умолчанию "Автоцвет" (или отключение цвета не будет отображаться). По крайней мере, если вы хотите запретить пользователям печатать цвета, это может помочь.