Infelizmente, na minha experiência, acho que não há como atualizar em massa vários drivers de fila de impressoras. Eu acho que você precisa entrar em cada fila de impressão e alterar as configurações do driver individualmente.
Em nosso servidor de impressão Server 2008 R2, temos ~ 30 impressoras HP (algumas CM3530s, M4345s e CP3525s) e eu fui solicitado a converter toda a impressão frente e verso e, para as impressoras coloridas, em escala de cinza. Existe um script powershell ou um truque de linha de cmd ou preciso passar por cada configuração de impressora e alterá-la manualmente?
Na verdade, o novo v5.6.0 da HP de seus drivers de impressão " HP Universal PS " e " HP Universal PCL 6 " vem com um utilitário chamado: " HP Driver Config Util ", que permite modificar o arquivo CFG dentro da pasta de instalação do driver, para que qualquer fila que seja alterada para esse driver receba as configurações especificadas. Você também pode bloquear as configurações para que os usuários não consigam fazer alterações desnecessárias.
-John
Setprinter.exe pode fazer isso, pelo menos para drivers de impressora HP.
Aqui está uma cópia de um script PS que usa o comando set printer para alterar a cor para 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"
}
O primeiro lugar que eu procuraria é:
HKLM\SYSTEM\CurrentControlSet\Control\Print\Printers
Aqui você encontrará informações de configuração individualizadas para todas as filas instaladas na máquina. Cada chave conterá pelo menos essas três subchaves:
DsDriver
DsSpooler
PrinterDriverData
O primeiro e o terceiro são o que você quer dar uma olhada. Alguns drivers armazenarão muitas informações específicas do modelo aqui para economizar tempo e usar menos recursos de rede.
No entanto, acho que as configurações específicas do recurso que você obtém de "Padrões de impressão" são controladas no nível do driver. A maioria das impressoras usa o SNMP para obter / definir automaticamente essas informações. Você também pode encontrar entradas de registro espalhadas pelo registro que armazenaram informações em cache úteis aqui.
Boa sorte!
A resposta de Dawne não funcionou. O comando também não é setprinter
, e quaisquer referências mostram "Set-Printer". Parece que seria melhor editar o registro nesse ponto.
link (Set-PrintConfiguration) link (definir impressora)
Eu não tive sorte com Set-Printer
, mas me aproximei de 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
Você pode usar parte da resposta de Dawne para obter uma lista de impressoras e, em seguida, fazer um loop (para inserir programaticamente o nome da impressora). O nome estará sob a propriedade Name
.
$PrinterList = get-wmiobject -ComputerName $TargetHost -class win32_printer
O problema com essa abordagem é que ela desativa todas as cores juntas, pelo que posso reunir. Também não funcionou para o meu driver PCL, apenas PS. Verificar propriedades / preferências da impressora ainda mostrará um valor padrão de Auto Color (também conhecido como desabilitar cor não refletirá). No mínimo, se você quiser impedir que os usuários imprimam cores, isso pode ajudar.