sábado, 12 de março de 2011

Instalar Impressora num Domínio Via Script

Recentemente estive preocupado em instalar uma impressora em vários equipamentos, de uma empresa e seria um tanto cansativo instalar máquina por máquina (manualmente) em mais de 50 micros a mesma impressora.
Então eu procurei na net um script que me ajudasse a fazer isso e finalmente consegui achar um que funcionasse.

Detalhamento do Script:

Ao executa-lo o script procura no servidor o driver da impressora (por isso é importante vcs colocarem o driver num caminho de facil localização) a ser instalada, mapeia a porta da impressora(o ip da dita cuja) e ainda define ela como padrão.



Salvem o arquivo na pasta scripts do servidor, e peça pra que todos os usuários executem esse script.



Não esqueçam de salva-lo com a extensão .vbs


=============================SCRIPT===============================



'Verifica se a impressora ja esta instalada
DIM multiPrinter, UNCpath1, UNCpath2, arrPrinters, oPrinters, strPrinter,
boolMapped, i

Set multiPrinter = CreateObject("wscript.network")
Set oPrinters = multiPrinter.EnumPrinterConnections

       For i = 0 to oPrinters.Count - 1 Step 2
               If oPrinters.Item(i+1) = "Nome da Impressora de Rede" Then
               WScript.Echo "A impressora Nome da Impressora ja esta instalada."
               WScript.quit 'Finaliza o script caso a impressora ja esteja instalada
               end if
       Next



PathToDLL = "\\Caminho do driver no servidor"
portloc = "Ip da impressora"
DriverName = "Nome da impressora"
PrintQueueName = ""

set wshshell = wscript.createobject("wscript.shell")
set fso = createobject("scripting.filesystemobject")

'Copia e registra DLL para instalação de impressora
fso.copyfile PathToDLL, "c:\windows\Driver.DLL", True
wshshell.run "regsvr32 /s ""c:\windows\Driver.DLL""", , True
wscript.sleep 1000

       dim oPort
       dim oMaster
       set oPort = CreateObject("Port.Port.1")
       set oMaster = CreateObject("PrintMaster.PrintMaster.1")


        portinput = "IP_" & portloc
       oPort.ServerName = ""

       sPortExist = False
       for each oPort in oMaster.Ports("")
         if oPort.PortName = portinput then
           sPortExist = True
         End If
       next

 If sPortExist = False then

       set oPort = CreateObject("Port.Port.1")
       oPort.PortName   = portinput
       oPort.PortType = 1
       oPort.HostAddress = portloc
       oPort.PortNumber = 9100
       oPort.SNMP = false
       oMaster.PortAdd oPort
       if Err <> 0 then
         msgbox "an error occurred"
       end if

 End If


       dim oPrinter
       set oPrinter = CreateObject("Printer.Printer.1")
       oPrinter.ServerName  = ""
       oPrinter.PrinterName = PrintQueueName
       oPrinter.DriverName  = DriverName
       oPrinter.PortName    = portinput
       oPrinter.DriverPath = "\\Caminho do driver no servidor"
       oPrinter.Inffile = "\\Caminho do driver no servidor"

       oMaster.PrinterAdd oPrinter

       'if Err <> 0 then
          'msgbox "an error occurred: " & Err
       'end if


   set oport = nothing
   set oPrinter = nothing
   set oMaster = nothing

 msgbox "Impressora instalada com sucesso."

   set wshshell = nothing
   set fso = nothing

'Seta a impressora como default

Dim objNetwork, strUNCPrinter
strUNCPrinter = "Lexmark E120n"
Set objNetwork = CreateObject("WScript.Network")

' Here is where we set the default printer to strUNCPrinter
objNetwork.SetDefaultPrinter strUNCPrinter

WScript.Quit

Nenhum comentário: