Usuário com melhor resposta
Deletar determina impressora

Pergunta
-
Pessoal, estou com um mega problema aki, preciso de deletar 5 impressora que foram desativas na empresa, mais preciso que seja deletada somente as 5 e que o usuario continue com as outras que ele tem, tenho um script aki que deleta todas, tem alguma coisa de escolher os nomes das impressoras a serem deletadas???
Segue o script que tenho (mais ele deleta todas as impressoras instaladas)
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")Set colInstalledPrinters = objWMIService.ExecQuery _
("Select * from Win32_Printer")For Each objPrinter in colInstalledPrinters
Abraços
objPrinter.Delete_
Next
Respostas
-
Você disse que quer deletar umas impressoras.
Se for isto, o script vai funcionar sim. É que faltou o "_" no que mandei.
Rode este para saber quais impressoras/portas você precisa deletar.
---------------------------------------------------------------------------------------------------------------
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 & " Porta: " & objPrinter.PortNameNext
---------------------------------------------------------------------------------------------------------------Ele irá retornar algo assim:
Nome: Xerox 4250 Porta: IP_192.168.0.1
Nome: Xerox 4950 Porta: IP_192.168.0.2
---------------------------------------------------------------------------------------------------------------
Depois, altere a linha em vermelho com os dados das impressoras que você quer deletar.
---------------------------------------------------------------------------------------------------------------
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")Set colInstalledPrinters = objWMIService.ExecQuery _
("Select * from Win32_Printer")For Each objPrinter in colInstalledPrinters
if instr(1, "IP_192.168.0.1, IP_192.168.0.2", objPrinter.PortName ) > 0 then
objPrinter.Delete_
end if
Next- Marcado como Resposta Fábio JrModerator sexta-feira, 13 de janeiro de 2012 11:07
Todas as Respostas
-
Faça um teste com wscript.echo objPrinter.Name no lugar do objPrinter.delete para saber os nomes das impressoras, altere o codigo abaixo e depois é só executar localmente nas estações.
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")Set colInstalledPrinters = objWMIService.ExecQuery _
("Select * from Win32_Printer")For Each objPrinter in colInstalledPrinters
If instr("Xerox Phaser 3425 PCL 6, HP Color LaserJet 5500 PCL6", objPrinter.Name ) > 0 then
objPrinter.DeleteEnd If
Next -
Eugenio,
Não deu certo, vou te mandar o que eu tenho para instalar ve se ajuda alguma coisa
'Instala Impressoras e define padrão.
Set WshNetwork = CreateObject("WScript.Network")
WshNetwork.AddWindowsPrinterConnection "\\sbcampo7\ADM-HPL3800"
WshNetwork.AddWindowsPrinterConnection "\\sbcampo7\ADM-HPL4050"
WshNetwork.AddWindowsPrinterConnection "\\sbcampo7\ADM-RICOHL1205"
WshNetwork.AddWindowsPrinterConnection "\\sbcampo7\ALM-HPL2015"
WshNetwork.AddWindowsPrinterConnection "\\sbcampo7\COM-HPL1300"
WshNetwork.AddWindowsPrinterConnection "\\sbcampo7\COM-HPL2420"
WshNetwork.SetDefaultPrinter "\\sbcampo7\ADM-HPL3800"esse eh o que eu instalo.
-
Você disse que quer deletar umas impressoras.
Se for isto, o script vai funcionar sim. É que faltou o "_" no que mandei.
Rode este para saber quais impressoras/portas você precisa deletar.
---------------------------------------------------------------------------------------------------------------
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 & " Porta: " & objPrinter.PortNameNext
---------------------------------------------------------------------------------------------------------------Ele irá retornar algo assim:
Nome: Xerox 4250 Porta: IP_192.168.0.1
Nome: Xerox 4950 Porta: IP_192.168.0.2
---------------------------------------------------------------------------------------------------------------
Depois, altere a linha em vermelho com os dados das impressoras que você quer deletar.
---------------------------------------------------------------------------------------------------------------
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")Set colInstalledPrinters = objWMIService.ExecQuery _
("Select * from Win32_Printer")For Each objPrinter in colInstalledPrinters
if instr(1, "IP_192.168.0.1, IP_192.168.0.2", objPrinter.PortName ) > 0 then
objPrinter.Delete_
end if
Next- Marcado como Resposta Fábio JrModerator sexta-feira, 13 de janeiro de 2012 11:07
-
Valeu msm amigo deu certinho aki
abraços
- Sugerido como Resposta Mauro Dourado sexta-feira, 7 de agosto de 2009 14:18
-
Eugenio, sei que tem muito tempo essa dúvida, mais gostaria de incrementar o problema. Se a impressora estiver instalada no computador e se colocar esse script para rodar como o usuário comum, o script não roda porque o usuário não tem privilégio sobre objeto: Acesso negado.
Você sabe como dar credenciais para que essa ação seja realizada.