[Script] Manipulando impressoras com VBScript

Scripts diversos para automatizar tarefas em servidores ou auxilio com tarefas administrativas.
Avatar do usuário
marceloleaes
Administrator
Administrator
Mensagens: 1516
Registrado em: 10 Jun 2013 12:45
Localização: Novo Hamburgo
Idade: 41
Contato:
Status: Offline

[Script] Manipulando impressoras com VBScript

Mensagem por marceloleaes »

Segue uma lista de scripts úteis para manipulação de impressoras, ações como mapear, renomear, excluir e setar padrão. Basta copiar o código, editar e salvar com a extensão .vbs, depois agende a execução automática da maneira que achar melhor.

Mapeia e seta como padrão

Código: Selecionar todos

Set WshNetwork = CreateObject("WScript.Network")

WshNetwork.AddWindowsPrinterConnection "\\SERVIDORIMPRESSAO\IMPRESSORAXYZ"
WshNetwork.SetDefaultPrinter "\\SERVIDORIMPRESSAO\IMPRESSORAXYZ"
Define uma impressora como padrão

Código: Selecionar todos

strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

Set colInstalledPrinters =  objWMIService.ExecQuery _
    ("Select * from Win32_Printer Where Name = 'NOMEDAIMPRESSORAAQUI'")

For Each objPrinter in colInstalledPrinters
    objPrinter.SetDefaultPrinter()
Next
Remove uma impressora local

Código: Selecionar todos

strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

Set colInstalledPrinters =  objWMIService.ExecQuery _
    ("Select * from Win32_Printer where DeviceID = 'NOMEDAIMPRESSORAAQUI'")

For Each objPrinter in colInstalledPrinters
    objPrinter.Delete_
Next
Remove uma impressora mapeada

Código: Selecionar todos

Set objNetwork = WScript.CreateObject("WScript.Network")
objNetwork.RemovePrinterConnection "\\SERVIDORIMPRESSAO\IMPRESSORAXYZ"
Lista as impressoras da máquina ( saida em dialog )

Código: Selecionar todos

strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

Set colInstalledPrinters =  objWMIService.ExecQuery _
    ("Select * from Win32_Printer")

For Each objPrinter in colInstalledPrinters
    Wscript.Echo "Nome: " & objPrinter.Name
    Wscript.Echo "Local: " & objPrinter.Location
    Wscript.Echo "Padrão: " & objPrinter.Default
Next
Renomeia nome de impressora para padronização

Código: Selecionar todos

strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

Set colPrinters =  objWMIService.ExecQuery _
    ("Select * from Win32_Printer Where DeviceID = 'HP LaserJet 4Si M Series PCL6'")

For Each objPrinter in colPrinters
    objPrinter.RenamePrinter("ArtDepartmentPrinter")
Next

Set colPrinters = objWMIService.ExecQuery _
    ("Select * From Win32_Printer Where DeviceID = 'NOVONOMEDAIMPRESSORA' ")

For Each objPrinter in colPrinters
    objPrinter.ShareName = "ArtDepartmentPrinter"
    objPrinter.Put_
Next
Instala impressora de rede e ativa compartilhamento

Código: Selecionar todos

strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

Set objPrinter = objWMIService.Get("Win32_Printer").SpawnInstance_

objPrinter.DriverName = "HPFINANCEIRO"
objPrinter.PortName   = "IP_192.168.0.250"
objPrinter.DeviceID   = "ScriptedPrinter"
objPrinter.Location = "Departamento Financeiro"
objPrinter.Network = True
objPrinter.Shared = True
objPrinter.ShareName = "HPFINANCEIRO"
objPrinter.Put_
Resume serviços pausados em uma impressora

Código: Selecionar todos

strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

Set colInstalledPrinters =  objWMIService.ExecQuery _
    ("Select * from Win32_Printer Where Name = 'NOMEDAIMPRESSORAAQUI'")

For Each objPrinter in colInstalledPrinters 
    ObjPrinter.Resume()
Next
Remove todos os trabalhos grandes da fila

Código: Selecionar todos

strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

Set colPrintJobs =  objWMIService.ExecQuery _
    ("Select * from Win32_PrintJob Where Size > 1000000")

For Each objPrintJob in colPrintJobs 
    objPrintJob.Delete_
Next
Remove portas de impressão sem uso

Código: Selecionar todos

Set objDictionary = CreateObject("Scripting.Dictionary")

strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

Set colPrinters =  objWMIService.ExecQuery _
    ("Select * from Win32_Printer")

For Each objPrinter in colPrinters 
    objDictionary.Add objPrinter.PortName, objPrinter.PortName
Next

Set colPorts = objWMIService.ExecQuery _
    ("Select * from Win32_TCPIPPrinterPort")
For Each objPort in colPorts
    If objDictionary.Exists(objPort.Name) Then
    Else
        ObjPort.Delete_
    End If
Next
Automatizando instalação de drivers

Código: Selecionar todos

strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
objWMIService.Security_.Privileges.AddAsString "SeLoadDriverPrivilege", True

Set objDriver = objWMIService.Get("Win32_PrinterDriver")

objDriver.Name = "NOVA IMPRESSORA MODELO XY3000"
objDriver.SupportedPlatform = "Windows NT x86"
objDriver.Version = "3"
objDriverPath = "C:\Scripts\NewPrinter.dll"
objInfname = "C:\Scripts\NewPrinter.inf"
intResult = objDriver.AddPrinterDriver(objDriver)

Bom proveito  ;)


"Transportai um punhado de terra todos os dias e fareis uma montanha." Confúcio

jose.rodriguesfilho.7
Newbie
Newbie
Mensagens: 3
Registrado em: 13 Fev 2014 11:00
Status: Offline

Re:[Script] Manipulando impressoras com VBScript

Mensagem por jose.rodriguesfilho.7 »

Certo funciona legal, mas como faço pois quando vou entrar na maquina para conectar a impressora ele pede usuario e senha, como eu faço para colocar o usuario e senha no script.

Att.

Avatar do usuário
marceloleaes
Administrator
Administrator
Mensagens: 1516
Registrado em: 10 Jun 2013 12:45
Localização: Novo Hamburgo
Idade: 41
Contato:
Status: Offline

Re:[Script] Manipulando impressoras com VBScript

Mensagem por marceloleaes »

Cara, eu sempre utilizo estes scripts em um ambiente com dominio e através de GPO.

Você esta tentando usar eles em um workgroup ?
"Transportai um punhado de terra todos os dias e fareis uma montanha." Confúcio

jose.rodriguesfilho.7
Newbie
Newbie
Mensagens: 3
Registrado em: 13 Fev 2014 11:00
Status: Offline

Re:[Script] Manipulando impressoras com VBScript

Mensagem por jose.rodriguesfilho.7 »

Exatamente não uso em dominio,

eu fiz isso:

set sh = CreateObject("WScript.Shell")

' Conecta no compartilhamento para fazer o login, pois sem o compartilhamento ele não consegue conectar a impressora.
sh.run "net use z: \\192.168.13.2\troca /user:administrador minhasenha", 0


Mas eu tenho que ter um compartilhamento na rede e não é o método correto, funciona, mas gostaria de saber se existe uma maneira melhor.

Avatar do usuário
marceloleaes
Administrator
Administrator
Mensagens: 1516
Registrado em: 10 Jun 2013 12:45
Localização: Novo Hamburgo
Idade: 41
Contato:
Status: Offline

Re:[Script] Manipulando impressoras com VBScript

Mensagem por marceloleaes »

Se a necessidade for somente mapear a impressora, acho que isto te atende

Set oNet = WScript.CreateObject("WScript.Network")
oNet.AddPrinterConnection("Impressora Xyz","\\maquina\impressora",False,"dominio\usuario","senha")
"Transportai um punhado de terra todos os dias e fareis uma montanha." Confúcio

jose.rodriguesfilho.7
Newbie
Newbie
Mensagens: 3
Registrado em: 13 Fev 2014 11:00
Status: Offline

Re:[Script] Manipulando impressoras com VBScript

Mensagem por jose.rodriguesfilho.7 »

Apresenta um erro "Não é possível usar parênteses ao chamar um Sub"

Responder

Voltar para “Scripts”