На сервере печати Server 2008 R2 у нас есть ~ 30 принтеров HP (некоторые модели CM3530, M4345 и CP3525), и меня попросили преобразовать всю двустороннюю печать, а для цветных принтеров - шкалу серого. Есть ли сценарий PowerShell или трюк с cmd-строкой, или мне нужно пройти через настройки каждого принтера и изменить их вручную?
Собственно новый HP v5.6.0 их "Универсальный блок питания HP" и "Универсальный HP PCL 6"драйверы печати поставляются с утилитой под названием:"Утилита конфигурации драйвера HP", который позволяет вам изменять файл CFG в папке установки драйвера, чтобы любая очередь, измененная для этого драйвера, получала указанные вами настройки. Вы также можете заблокировать настройки, чтобы пользователи не могли вносить ненужные изменения.
-Джон
К сожалению, исходя из моего опыта, я считаю, что массового обновления драйверов нескольких очередей принтера нет. Я бы подумал, что вам нужно заходить в каждую очередь печати и изменять настройки драйвера индивидуально.
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
Первое и третье - это то, на что вы хотите взглянуть. Некоторые драйверы кэшируют здесь много информации о конкретной модели, чтобы сэкономить время и использовать меньше сетевых ресурсов.
Тем не менее, я думаю, что специфические настройки функций, которые вы получаете из «Printing Defaults», управляются на уровне драйвера. Однако большинство принтеров используют SNMP для автоматического получения / установки этой информации. Вы также можете найти записи реестра, разбросанные по реестру, которые содержат кешированную информацию, которая здесь полезна.
Удачи!
Ответ от Доуна не сработал. Команда тоже не 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-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. При проверке свойств / настроек принтера по-прежнему будет отображаться значение по умолчанию Автоцвет (иначе отключение цвета не будет отражаться). По крайней мере, если вы хотите запретить пользователям печатать в цвете, это может помочь.