none
Instala printer com nome novo. RRS feed

  • Pergunta

  • Ba galera bom dia.

     

    Tenho uma lista em txt aonde tenho o nome das impressoras, nome do compartilhamento, driver, e porta ip, e no mesmo tenho na mesma seqüência os mesmos campos porem no nome das impressoras e compartilhamento tenho uma mudança de nome.

    Eu gostaria de saber se algum tem algum script que leia o txt ordenado dessa forma ou de outra, e instale as impressoras em um outro servidor com o nome no, utilizando o driver que esta apontado no txt, e adicionado a porta ip que esta no txt...

     

    Obrigado Tche.

    quarta-feira, 24 de março de 2010 14:34

Respostas

  • Olá,


    Verifique o script abaixo:

     

    on error resume next
    Const ForReading = 1
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    'caminho do arquivo txt
    Set objTextFile = objFSO.OpenTextFile("C:\teste\printer.txt",ForReading)

    strDivide =  ";"


    Do While objTextFile.AtEndOfStream <> True

       nome = objTextFile.ReadLine
       arrVar = Split(nome,strDivide)
    wscript.echo nome
    'ORDE DO ARQUIVO SEPARADO POR PONTO E VIRGULA
    'nome das impressoras; nome do compartilhamento; driver;  porta ip

       strNome = arrVar(0)
       strShare = arrVar(1)
       strDriver = arrVar(2)
       strIP = arrVar(3)
         
       addPrinter strNome,strShare,strDriver,strIP
    Loop



    Sub AddPrinter(Nome,Share,Driver,strIP)
    strComputer = "."
    Set objWMIService = GetObject("winmgmts:" _
        & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    Set objNewPort = objWMIService.Get _
        ("Win32_TCPIPPrinterPort").SpawnInstance_
    Set objPrinter = objWMIService.Get("Win32_Printer").SpawnInstance_


    strPorta = "8888"

    'CRIA A PORTA PARA COMUNICAÇÃO
    objNewPort.Name = "IP_"&strIP
    objNewPort.Protocol = 1
    objNewPort.HostAddress = strIP
    objNewPort.PortNumber = strPorta
    objNewPort.SNMPEnabled = False
    objNewPort.Put_

    ' INSTALA A IMPRESSORA
    'o nome do driver deve estar igual ao driver existente no windows
    objPrinter.DriverName = strDriver
    objPrinter.PortName   = "IP_"&strIP
    objPrinter.DeviceID   = Nome
    objPrinter.Location = Nome
    objPrinter.Network = True
    objPrinter.Shared = True
    objPrinter.ShareName = strShare
    objPrinter.Put_

    End sub

     

     

    Até mais,

    Jesiel

    Obs.: Se útil, classifique

     

     

    • Marcado como Resposta Marcelo TI quinta-feira, 1 de abril de 2010 14:58
    terça-feira, 30 de março de 2010 12:48

Todas as Respostas

  • Bom dia Tche.

    Alguma luz........

    quinta-feira, 25 de março de 2010 11:11
  •  

    Olá,


    Utilize o script abaixo para varrer o arquivo texto:

    Const ForReading = 1

    Set objFSO = CreateObject("Scripting.FileSystemObject")
    'caminho do arquivo txt
    Set objTextFile = objFSO.OpenTextFile("C:\teste\printer.txt",ForReading)

    strDivide =  ";"


    Do While objTextFile.AtEndOfStream <> True

       nome = objTextFile.ReadLine
       arrVar = Split(nome,strDivide)

    'ORDE DO ARQUIVO SEPARADO POR PONTO E VIRGULA
    'nome das impressoras; nome do compartilhamento; driver;  porta ip

       strNome = arrVar(0)
       strShare = arrVar(1)
       strDriver = arrVar(2)
       strPorta = arrVar(3)
          
       addPrinter strNome,strShare,strDriver,strPorta
    Loop



    Sub AddPrinter(Nome,Share,Driver,strIP)

    strComputer = "."
    Set objWMIService = GetObject("winmgmts:" _
        & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    Set objNewPort = objWMIService.Get _
        ("Win32_TCPIPPrinterPort").SpawnInstance_
    Set objPrinter = objWMIService.Get("Win32_Printer").SpawnInstance_


    strPorta = "8888"

    'CRIA A PORTA PARA COMUNICAÇÃO
    objNewPort.Name = "IP_"&strIP
    objNewPort.Protocol = 1
    objNewPort.HostAddress = strIP
    objNewPort.PortNumber = strPorta
    objNewPort.SNMPEnabled = False
    objNewPort.Put_

    ' INSTALA A IMPRESSORA
    'o nome do driver deve estar igual ao driver existente no windows
    objPrinter.DriverName = strDriver
    objPrinter.PortName   = "IP_"&strIP
    objPrinter.DeviceID   = Nome
    objPrinter.Location = Nome
    objPrinter.Network = True
    objPrinter.Shared = True
    objPrinter.ShareName = strShare
    objPrinter.Put_

    End sub

     


    Aí é só adaptar para inserir a impressora.

    Até mais,

    Jesiel

    Obs.: Se útil, classifique

     

     

     

    • Marcado como Resposta Marcelo TI quinta-feira, 25 de março de 2010 15:16
    • Não Marcado como Resposta Marcelo TI quinta-feira, 25 de março de 2010 17:02
    quinta-feira, 25 de março de 2010 12:45
  • Ba Jesiel

    OBrigado, vou fazer os testes.

    Abraço tche.

    quinta-feira, 25 de março de 2010 14:46
  • Jesiel

    Dois problemas vc pode me ajudar tche.

    primeiro, que objPrinter. eu devo usar para colcolar o comentario, tirado do mesmo arquivo txt ?

    O scritp da forma que esta, esta instalando as impressoras, porem o mesmo esta jogando todas as impressoras para a mesma porta IP sendo que no arquivo os IP esta diferentes, o que pode ser ?

    quinta-feira, 25 de março de 2010 17:02
  • Jesiel.

    O porta ip tche é a porta TCP usara ou é o ip da fila ?

    quinta-feira, 25 de março de 2010 17:07
  • Jesiel.

    Bom dia.

    O txt esta assim.

    HPFila1; HPFila1; HP LaserJet 4100 Series PCL6; 192.168.10.20

    sexta-feira, 26 de março de 2010 10:51
  • Olá,


    Teste o script abaixo:

     

    Const ForReading = 1

    Set objFSO = CreateObject("Scripting.FileSystemObject")
    'caminho do arquivo txt
    Set objTextFile = objFSO.OpenTextFile("C:\teste\printer.txt",ForReading)

    strDivide =  ";"


    Do While objTextFile.AtEndOfStream <> True

       nome = objTextFile.ReadLine
       arrVar = Split(nome,strDivide)

    'ORDE DO ARQUIVO SEPARADO POR PONTO E VIRGULA
    'nome das impressoras; nome do compartilhamento; driver;  porta ip

       strNome = arrVar(0)
       strShare = arrVar(1)
       strDriver = arrVar(2)
       strIP = arrVar(3)
         
       addPrinter strNome,strShare,strDriver,strIP
    Loop



    Sub AddPrinter(Nome,Share,Driver,strIP)
    strComputer = "."
    Set objWMIService = GetObject("winmgmts:" _
        & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    Set objNewPort = objWMIService.Get _
        ("Win32_TCPIPPrinterPort").SpawnInstance_
    Set objPrinter = objWMIService.Get("Win32_Printer").SpawnInstance_


    strPorta = "8888"

    'CRIA A PORTA PARA COMUNICAÇÃO
    objNewPort.Name = "IP_" & strIP
    objNewPort.Protocol = 1
    objNewPort.HostAddress = strIP
    objNewPort.PortNumber = strPorta
    objNewPort.SNMPEnabled = False
    objNewPort.Put_

    ' INSTALA A IMPRESSORA
    'o nome do driver deve estar igual ao driver existente no windows
    objPrinter.DriverName = Nome
    objPrinter.PortName   = "IP_"&strIP
    objPrinter.DeviceID   = Nome
    objPrinter.Location = "Servidor de impressao"
    objPrinter.Network = True
    objPrinter.Shared = True
    objPrinter.ShareName = Share
    objPrinter.Put_
    End sub

     

    Até mais,

    Jesiel

    Obs.: Se útil, classifique

     

    sexta-feira, 26 de março de 2010 12:01
  • Ba Jesiel

    Da forma que esta estou tendo erro no ultimo put_ e o erro é generic failure cod 80041001 SWbemObjectEx, ai fiz as alterações abaixo mais assim fico com erro no objNewPort.PortNumber, o problema é que no primeiro script ele adiciona as impressoras com os nomes certos driver certos tche porem ele cria uma unica porta da senguinte forma IP_8888 com enderço 8888 e liga todas as impressoras a ela e nao cria as portas com os IPs que estão no txt e vendo isso fiz as alterações abaixo mais tb nao rolou tche.

    Const ForReading = 1

    Set objFSO = CreateObject("Scripting.FileSystemObject")
    'caminho do arquivo txt
    Set objTextFile = objFSO.OpenTextFile("C:\printer.txt",ForReading)

    strDivide =  ";"

    Do While objTextFile.AtEndOfStream <> True

       nome = objTextFile.ReadLine
       arrVar = Split(nome,strDivide)

    'ORDE DO ARQUIVO SEPARADO POR PONTO E VIRGULA
    'nome das impressoras; nome do compartilhamento; driver;  porta ip

       strNome = arrVar(0)
       strShare = arrVar(1)
       strDriver = arrVar(2)
       strIP = arrVar(3)
          
       addPrinter strNome,strShare,strDriver,strIP
    Loop

    Sub AddPrinter(Nome,Share,Driver,strIP)

    strComputer = "."
    Set objWMIService = GetObject("winmgmts:" _
        & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    Set objNewPort = objWMIService.Get _
        ("Win32_TCPIPPrinterPort").SpawnInstance_
    Set objPrinter = objWMIService.Get("Win32_Printer").SpawnInstance_

    strPorta = strIP 

    'CRIA A PORTA PARA COMUNICAÇÃO
    objNewPort.Name = "IP_"&strIP
    objNewPort.Protocol = 1
    objNewPort.HostAddress = strIP
    objNewPort.PortNumber = strPorta
    objNewPort.SNMPEnabled = False
    objNewPort.Put_

    ' INSTALA A IMPRESSORA
    'o nome do driver deve estar igual ao driver existente no windows
    objPrinter.DriverName = strDriver
    objPrinter.PortName   = "IP_"&strIP
    objPrinter.DeviceID   = Nome
    objPrinter.Location = "Servidor de impressao"
    objPrinter.Network = True
    objPrinter.Shared = True
    objPrinter.ShareName = strShare
    objPrinter.Put_
    End sub

    sexta-feira, 26 de março de 2010 18:52
  • Olá,


    Verifique o script abaixo:

     

    on error resume next
    Const ForReading = 1
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    'caminho do arquivo txt
    Set objTextFile = objFSO.OpenTextFile("C:\teste\printer.txt",ForReading)

    strDivide =  ";"


    Do While objTextFile.AtEndOfStream <> True

       nome = objTextFile.ReadLine
       arrVar = Split(nome,strDivide)
    wscript.echo nome
    'ORDE DO ARQUIVO SEPARADO POR PONTO E VIRGULA
    'nome das impressoras; nome do compartilhamento; driver;  porta ip

       strNome = arrVar(0)
       strShare = arrVar(1)
       strDriver = arrVar(2)
       strIP = arrVar(3)
         
       addPrinter strNome,strShare,strDriver,strIP
    Loop



    Sub AddPrinter(Nome,Share,Driver,strIP)
    strComputer = "."
    Set objWMIService = GetObject("winmgmts:" _
        & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    Set objNewPort = objWMIService.Get _
        ("Win32_TCPIPPrinterPort").SpawnInstance_
    Set objPrinter = objWMIService.Get("Win32_Printer").SpawnInstance_


    strPorta = "8888"

    'CRIA A PORTA PARA COMUNICAÇÃO
    objNewPort.Name = "IP_"&strIP
    objNewPort.Protocol = 1
    objNewPort.HostAddress = strIP
    objNewPort.PortNumber = strPorta
    objNewPort.SNMPEnabled = False
    objNewPort.Put_

    ' INSTALA A IMPRESSORA
    'o nome do driver deve estar igual ao driver existente no windows
    objPrinter.DriverName = strDriver
    objPrinter.PortName   = "IP_"&strIP
    objPrinter.DeviceID   = Nome
    objPrinter.Location = Nome
    objPrinter.Network = True
    objPrinter.Shared = True
    objPrinter.ShareName = strShare
    objPrinter.Put_

    End sub

     

     

    Até mais,

    Jesiel

    Obs.: Se útil, classifique

     

     

    • Marcado como Resposta Marcelo TI quinta-feira, 1 de abril de 2010 14:58
    terça-feira, 30 de março de 2010 12:48
  • Ba Jesiel

    Bom dia.

    Obrigado show rolou.

    quinta-feira, 1 de abril de 2010 14:56