A. The following code, which you can download here , searches for a connected network printer and replaces it with an alternate:
Option Explicit Dim objWMIService, objPrinter, colItems, strComputer, objWshShell, strDefaultState strComputer ="." Set objWshShell = WScript.CreateObject("WScript.Shell") Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2") ' For Remote: ' Set Locator = CreateObject("WbemScripting.SWbemLocator") ' Set objWMIService = Locator.ConnectServer(strComputer, "root\cimv2", strUserName, strPassword) Set colItems = objWMIService.ExecQuery ("SELECT * FROM Win32_Printer") ' On Error Resume Next For Each objPrinter In colItems If UCase(objPrinter.DeviceID) = UCase("\\savdalprinterOld\printer1") Then Wscript.Echo "Found match " & objPrinter.DeviceID & ", replacing" ' Add new printer. Need the ,1,true to wait for shell to complete before continue objWshShell.Run "rundll32 printui.dll,PrintUIEntry /in /Gw /q /n \\savdaldc01\printerNew",1, true ' Remove the old objWshShell.Run "rundll32 printui.dll,PrintUIEntry /dn /q /n \\savdalprinterOld\printer1",1, true If objPrinter.Default Then ' if it's the default set as default objWshShell.Run "rundll32 printui.dll,PrintUIEntry /y /n \\savdaldc01\printerNew",1, true End If End If Next WScript.Quit
You can change the printer the code searches for and what it maps to when it finds a match.
0 comments
Hide comments