none
Troca de fila de impressão RRS feed

  • Pergunta

  • Boa noite pessoal.

    vamos nos solicitar mas uma ajuda.. como posso fazer com vbs ou wmi, um scritp que pegue as impressoras que estão instalada em um estação e altere o caminho da fila de impressão, de \\servera\impressora_A para \\serverb\\impressora_B tendo tb a preocupação de verificar o nome da impressora para realizar a alteração correta ou se possivel mudar somente o nome do servidor de servera para serverb...


    Grande abraço
    quarta-feira, 27 de maio de 2009 20:36

Respostas

  • Olá,

    Faça assim:


    Option Explicit

    Dim objNetwork,x,strComputer, ColInstalledPrinters,objWMIService,objPrinter

    'AQUI EU CRIO O ARRAY COM 12 POSIÇOES
    Dim strAntiga(5), strNova(5)

    'VARIAVEIS QUE PRECISA ALTERAR

    strAntiga(0) = "\\servidora\impa "
    strNova(0) = "\\servidorb\impa "

    strAntiga(1) = "\\servidora\impb "
    strNova(1) = "\\servidorb\impb "

    strAntiga(2) = "\\servidora\impc "
    strNova(2) = "\\servidorb\impc "

    strAntiga(3) = "\\servidora\impd "
    strNova(3) = "\\servidorb\impd "

    strAntiga(4) = "\\servidora\impe "
    strNova(4) = "\\servidorb\impe "

    strAntiga(5) = "\\servidora\impf "
    strNova(5) = "\\servidorb\impf "

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

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



    For Each objPrinter in colInstalledPrinters
       For x = 0 to uBound(strAntiga)
          if UCASE(objPrinter.Name) = UCASE(strAntiga(x)) Then

             Set objNetwork = CreateObject("WScript.Network")
             'REMOVE A IMPRESSORA ANTIGA'
     
              objNetwork.RemovePrinterConnection strAntiga(x)

             'CONECTA A NOVA IMPRESSORA (TEM QUE TER O DRIVER INSTALADO)
              ObjNetWork.AddWindowsPrinterConnection strNova(x)

             'DEIXA A NOVA IMPRESSORA COMO PADRAO
              objNetwork.SetDefaultPrinter strNova(x)
          End if
       Next
    Next


    Faça os testes e nos retorne.

    Até mais,

    Jesiel

    Obs.: Se útil, classifique
    • Marcado como Resposta Marcelo TI domingo, 31 de maio de 2009 15:00
    sexta-feira, 29 de maio de 2009 13:49

Todas as Respostas

  • Olá,

    Verifique se o script abaixo atente sua necessidade:

    Option Explicit
    Dim objNetwork, strAntiga, strNova

    'VARIAVEIS QUE PRECISA ALTERAR
    strAntiga = "\\servera\impressora_A"
    strNova = "\\serverb\impressora_B"


    Set objNetwork = CreateObject("WScript.Network")

    'REMOVE A IMPRESSORA ANTIGA'
    objNetwork.RemovePrinterConnection strAntiga


    'CONECTA A NOVA IMPRESSORA (TEM QUE TER O DRIVER INSTALADO)
    ObjNetWork.AddWindowsPrinterConnection strNova

    'DEIXA A NOVA IMPRESSORA COMO PADRAO
    objNetwork.SetDefaultPrinter strNova

    Faça os testes e nos retorne.

    Até mais,

    Jesiel

    Obs.: Se útil, classifique
    quinta-feira, 28 de maio de 2009 12:58
  • Jesiel Boa noite cara e isso que eu quero e funciona porem rodando ele me mostrou um outro detalhe que esqueci de colocar na questao vamos ver se vc consegue me ajudar. o detalhe e o seguinte eu tenho 12 impressoras no total, e tem maquina no parq que tem 1 das 12 e outras que tem 2, 3 e assim vai, esse ponto de remover as antigas eu consegui matar usando uns toques que vc me passou em um outro caso criei la os strvelhos e todas sao deletadas tendo 1, 2, 3 ou mais, porem o ponto de instalar, tentei ir pelo mesmo caminho porem ele sai instalado todas as 12 e nao somente a que foi deletada, tem alguma forma de fazer ele instalar somente a que foi deletada. Abraço Valeu pela força mais uma vez.
    quinta-feira, 28 de maio de 2009 20:32
  • Olá,

    Faça um teste no script abaixo, não testei, mas qualquer coisa posta aí...


    Option Explicit
    Dim objNetwork,x,strComputer, ColInstalledPrinters,objWMIService,objPrinter
    'AQUI EU CRIO O ARRAY COM 12 POSIÇOES
    Dim strAntiga(12), strNova(12)

    'VARIAVEIS QUE PRECISA ALTERAR

    strAntiga(0) = "\\servera\impressoraA"
    strNova(0) = "\\serverb\impressoraB"

    strAntiga(1) = "\\serverC\impressoraC"
    strNova(1) = "\\serverD\impressoraD"

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

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



    For Each objPrinter in colInstalledPrinters
       For x = 0 to uBound(strAntiga)
          if UCASE(objPrinter.Name) = UCASE(strAntiga(x)) Then

             Set objNetwork = CreateObject("WScript.Network")
             'REMOVE A IMPRESSORA ANTIGA'
     
              objNetwork.RemovePrinterConnection strAntiga(x)

             'CONECTA A NOVA IMPRESSORA (TEM QUE TER O DRIVER INSTALADO)
              ObjNetWork.AddWindowsPrinterConnection strNova(x)

             'DEIXA A NOVA IMPRESSORA COMO PADRAO
              objNetwork.SetDefaultPrinter strNova(x)
          End if
       Next
    Next


    Faça os testes e nos retorne.

    Até mais,

    Jesiel

    Obs.: Se útil, classifique
    quinta-feira, 28 de maio de 2009 20:59
  • Jesiel.

    Boa noite.

    Cara to com umas duvidas vamos a elas.

    primeiro.

    'AQUI EU CRIO O ARRAY COM 12
    Dim strAntiga(12), strNova(12)

    Aqui devo criar assim ?

    Dim strAntiga(\\servera\impressora_A), strNova(\\serverb\impressora_b)
    Dim strAntiga(\\servera\impressora_C), strNova(\\serverb\impressora_D)
    Dim strAntiga(\\servera\impressora_E), strNova(\\serverb\impressora_F)

    Na instrução

    For Each objPrinter in colInstalledPrinters
       For x = 0 to uBound(strAntiga)

    Temos o item (x) tanto para strAntiga e para strNova, o que devo colocar nesse X, ou o ( Set colInstalledPrinters =  objWMIService.ExecQuery _   ("Select * from Win32_Printer") ) que vem acima, da o valor a esse (X), ou o X esta vindo la de cima no item ( Dim objNetwork,x,strComputer, ColInstalledPrinters,objWMIService,objPrinter )

    Valeu pela força mais uma vez.
    sexta-feira, 29 de maio de 2009 02:23
  • Ola,

    Então..

    'Nesta linha, você coloca quantas impressoras você irá migrar (coloque o mesmo valor no strAntiga e no strNova)
    Dim strAntiga(12), strNova(12)


    'Aqui, você irá colocar no strAntiga(0) a impressora antiga e no strNova a impressora nova...
    'Exemplo
    strAntiga(0) = "\\servera\impressoraA" 'AQUI É A IMPRESSORA ANTIGA
    strNova(0) = "\\serverb\impressoraB"  'AQUI A IMPRESSORA QUE IRÁ SUBSTITUIR A IMPRESSORA ANTIGA

    strAntiga(1) = "\\serverC\impressoraC" 'AQUI OUTRA IMPRESSORA ANTIGA
    strNova(1) = "\\serverD\impressoraD"  'AQUI A IMPRESSORA QUE IRÁ SUBSTITUIR A OUTRA IMPRESSORA ANTIGA


    O x do For você não precisa mexer, pois estou façando um For de x = 0 até o valor da quantidade de impressora (no exemplo que usei o x vai até 12 -> que é o tamanho do array strAntiga.

    Até mais,

    Jesiel

    Obs.: Se útil, classifique
    sexta-feira, 29 de maio de 2009 11:35
  • Ok. compreendi.. e deixei ele dessa forma porem ainda tenho o problema da instalaçao todas estao sendo instaladas e nao so as que foram deletadas.. o que fiz de errado.

    Option Explicit

    Dim objNetwork,x,strComputer, ColInstalledPrinters,objWMIService,objPrinter

    'AQUI EU CRIO O ARRAY COM 12 POSIÇOES
    Dim strA0(0), strN0(0)
    Dim strA1(0), strN1(0)
    Dim strA2(0), strN2(0)
    Dim strA3(0), strN3(0)
    Dim strA4(0), strN4(0)
    Dim strA5(0), strN5(0)

    'VARIAVEIS QUE PRECISA ALTERAR

    strA0(0) = "\\servidora\impa"
    strN0(0) = "\\servidorb\impa"

    strA1(0) = "\\servidora\impb"
    strN1(0) = "\\servidorb\impb"

    strA2(0) = "\\servidora\impc"
    strN2(0) = "\\servidorb\impc"

    strA3(0) = "\\servidora\impd"
    strN3(0) = "\\servidorb\impd"

    strA4(0) = "\\servidora\impe"
    strN4(0) = "\\servidorb\impe"

    strA5(0) = "\\servidora\impf"
    strN5(0) = "\\servidorb\impf"

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

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

    For Each objPrinter in colInstalledPrinters
       For x = 0 to uBound(strA0)
          if UCASE(objPrinter.Name) = UCASE(strA0(x)) Then

             Set objNetwork = CreateObject("WScript.Network")
             'REMOVE A IMPRESSORA ANTIGA'
     
              objNetwork.RemovePrinterConnection strA0(x)
              objNetwork.RemovePrinterConnection strA1(x)
              objNetwork.RemovePrinterConnection strA2(x)
              objNetwork.RemovePrinterConnection strA3(x)
              objNetwork.RemovePrinterConnection strA4(x)
              objNetwork.RemovePrinterConnection strA5(x)
             
             'CONECTA A NOVA IMPRESSORA (TEM QUE TER O DRIVER INSTALADO)
              ObjNetWork.AddWindowsPrinterConnection strN0(x)
              ObjNetWork.AddWindowsPrinterConnection strN1(x)
              ObjNetWork.AddWindowsPrinterConnection strN2(x)
              ObjNetWork.AddWindowsPrinterConnection strN3(x)
              ObjNetWork.AddWindowsPrinterConnection strN4(x)
              ObjNetWork.AddWindowsPrinterConnection strN5(x)

             'DEIXA A NOVA IMPRESSORA COMO PADRAO
              objNetwork.SetDefaultPrinter strN0(x)
          End if
       Next
    Next

    sexta-feira, 29 de maio de 2009 13:38
  • Olá,

    Faça assim:


    Option Explicit

    Dim objNetwork,x,strComputer, ColInstalledPrinters,objWMIService,objPrinter

    'AQUI EU CRIO O ARRAY COM 12 POSIÇOES
    Dim strAntiga(5), strNova(5)

    'VARIAVEIS QUE PRECISA ALTERAR

    strAntiga(0) = "\\servidora\impa "
    strNova(0) = "\\servidorb\impa "

    strAntiga(1) = "\\servidora\impb "
    strNova(1) = "\\servidorb\impb "

    strAntiga(2) = "\\servidora\impc "
    strNova(2) = "\\servidorb\impc "

    strAntiga(3) = "\\servidora\impd "
    strNova(3) = "\\servidorb\impd "

    strAntiga(4) = "\\servidora\impe "
    strNova(4) = "\\servidorb\impe "

    strAntiga(5) = "\\servidora\impf "
    strNova(5) = "\\servidorb\impf "

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

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



    For Each objPrinter in colInstalledPrinters
       For x = 0 to uBound(strAntiga)
          if UCASE(objPrinter.Name) = UCASE(strAntiga(x)) Then

             Set objNetwork = CreateObject("WScript.Network")
             'REMOVE A IMPRESSORA ANTIGA'
     
              objNetwork.RemovePrinterConnection strAntiga(x)

             'CONECTA A NOVA IMPRESSORA (TEM QUE TER O DRIVER INSTALADO)
              ObjNetWork.AddWindowsPrinterConnection strNova(x)

             'DEIXA A NOVA IMPRESSORA COMO PADRAO
              objNetwork.SetDefaultPrinter strNova(x)
          End if
       Next
    Next


    Faça os testes e nos retorne.

    Até mais,

    Jesiel

    Obs.: Se útil, classifique
    • Marcado como Resposta Marcelo TI domingo, 31 de maio de 2009 15:00
    sexta-feira, 29 de maio de 2009 13:49
  • Jesiel

    Bom dia Cara.

    Olha deu certo valeu mais uma vez pela força.

    posso fazer só mais uma pergunta, é possivel fazer um vbs que quando rodado ele apresente 3 botoes, um para passar a placa de rede para dhcp, outro para ip fixo já definido dentro do vbs, e outro pra sair do vbs ?

    Abraço

    Valeu pela força mesmo cara.
    sábado, 30 de maio de 2009 13:11
  • Olá,

    Dá sim Marcelo....

    Recomendo você marcar a resposta certa como resposata e abrir outro post, por se tratar de outro assunto.

    Até mais,

    Jesiel
    domingo, 31 de maio de 2009 13:48
  • Opa Desculpa Jeseil achei que ja tinha clicado no respondido.. ja estou fazendo agora e vou abrir o outro post. abraço.
    domingo, 31 de maio de 2009 15:00
  • Jesiel...

    Acredito que você possa me ajudar..
    Criei um novo Post, relacionado a este mesmo script onde estou tentando uma alteração da impressora padrão, veja:

    http://social.technet.microsoft.com/Forums/pt-BR/scriptadminpt/thread/fabb2b6e-65df-4ee2-92ee-08be09a2bf18

    quarta-feira, 4 de julho de 2012 20:00