Got the following Script to work, but needs to be run twice to remove the drivers:

Code:

cls
break on
dim $priReg,$i,$DriverKey,$Printers,$rc,$objServer,objService,$

$DriverKey='HKLM\SYSTEM\CurrentControlSet\Control\Print\Environments\Windows NT x86\Drivers\Version-3'
$Printers='HKCU\Software\Microsoft\Windows NT\CurrentVersion\Devices'

?'Before continuing, this process will remove all network printers and drivers'
?'Press CTRL+BREAK to stop now..'
?'Press any other key to continue'
?
get $

?'List Printers found..'
;Delete Printers
$i=0
DO
IF '\\'=LEFT($x,2) ; -- ONLY NETWORK PRINTERS
$priReg=$priReg+$x
ENDIF
$x=ENUMVALUE($Printers,$i)
IF '\\'=LEFT($x,2)
?$x
$rc=DELVALUE('HKCU\Software\Microsoft\Windows NT\CurrentVersion\Devices',$x)
$rc=DELVALUE('HKCU\Software\Microsoft\Windows NT\CurrentVersion\PrinterPorts',$x)
SLEEP '0.5'
ENDIF
$i=$i+1
UNTIL @error

??'Deleting Printers'
DelPrinterConnections

$objServer=GetObject('WinNT://.,computer')
$objService=$objServer.GetObject('Service','spooler')


??'Stopping the print spooler'
$objService.Stop
SLEEP 2

??'Listing Drivers'
;Delete drivers
$i=0
DO
$x=ENUMkey($DriverKey,$i)
IF 'HP'=LEFT($x,2) AND NOT INSTR($x,'Mobile')
?$x
SLEEP 1
ENDIF
$i=$i+1
UNTIL @error

??'Removing Drivers'
;Delete drivers
$i=0
DO
$x=ENUMkey($DriverKey,$i)
IF 'HP'=LEFT($x,2)
PDRIVERREMOVE(,$x)
SLEEP 1
ENDIF
$i=$i+1
UNTIL @error

SLEEP 2

??'Starting the print spooler'
$objService.Start

??'Process is complete, Press a key..'
$objServer=0
$objService=0
get $
;ActiveTouch
;CutePDF
;Image Writer
;Acrobat
;RightFAX
;Generator

; FUNCTION PDRIVERREMOVE()
;
; ACTION Remove Printer Drivers from a system
;
; AUTHOR Kent Dyer (leptonator@hotmail.com)
;
; CONTRIBUTORS
;
; VERSION 1.1
;
; DATE CREATED 29-June-2004
;
; DATE MODIFIED 24-May-2005
;
; KIXTART 4.02
;
; SYNTAX PdriverRemove()
;
; PARAMETERS
; wksta
; Workstation Name
; pdriver
; Print Driver Name
;
; DEPENDENCIES None
;
; RETURNS: Nothing
;
; REMARKS This is to remove print drivers by Microsoft Tech Article - 135406.
; http://support.microsoft.com/?id=135406
; This can be run locally using a login script, only written for 2k/XP/2k3
; If run using Login Script for example, you should remove the printers first
; Since this goes into HKLM for the Registry, and %WINDIR%\SYSTEM32, you will need
; appropriate priveleges. However, this can also be run as a remote Admin Script.
;
; EXAMPLEs
; PdriverRemove(,"HP LASERJET 4 PLUS") ; Remove HP LASERJET 4 PLUS from local Workstation
; PdriverRemove() ; Remove all Print Drivers from the system
;
; REMOVE PRINT DRIVERS FROM COMPUTERS ON THE DOMAIN
; DIM $container,$computer,$
; ?'Checking Domain computers now...'
; $container=GetObject('WinNT://'+@ldomain)
; $container.filter='Computer', ''
; FOR EACH $computer IN $container
; $computern=$computer.name
; ?$computern
; SHELL '%COMSPEC% /C PING -n 1 '+$computern
; IF @error=0
; PDRIVERREMOVE($srv)
; ENDIF
; NEXT
; ?'PROCESS IS COMPLETE.. PRESS A KEY'
; GET $
; KIXTART BBS http://www.kixtart.org/ubbthreads/showflat.php?Cat=&Number=139441

FUNCTION PDRIVERREMOVE(OPTIONAL $wksta, OPTIONAL $pdriver)
DIM $key,$keyname,$index,$fl,$rc,$drv
IF NOT $wksta
$wksta='\\'+@wksta+'\'
ELSE
$wksta='\\'+$wksta+'\'
ENDIF
$key=$wksta+'HKLM\SYSTEM\CurrentControlSet\Control\Print\Environments\Windows NT x86\Drivers\Version-3\'
IF $pdriver<>''
$index=0
DO
$keyname=ENUMKEY($key,$index)
IF INSTR($keyname,$pdriver)
$drv=READVALUE($key+$keyname,'Data File')
FOR EACH $fl IN SPLIT(READVALUE($key+$keyname,'Dependent Files'),'|')
IF EXIST($fl)
DEL $wksta+'admin$$\system32\spool\drivers\w32x86\3\'+$fl
ENDIF
NEXT
$rc=DELTREE($key+$keyname)
; -- AT THIS POINT, you should probably either restart the client or the PRINT SPOOLER
ENDIF
$index=$index+1
UNTIL LEN($keyname)=0
ELSE
; -- DELETE ALL PRINT DRIVERS
$index=0
DO
$keyname=ENUMKEY($key,$index)
$drv=READVALUE($key+$keyname,'Data File')
FOR EACH $fl IN SPLIT(READVALUE($key+$keyname,'Dependent Files'),'|')
IF EXIST($fl)
DEL $wksta+'admin$$\system32\spool\drivers\w32x86\3\'+$fl
ENDIF
NEXT
$rc=DELTREE($key+$keyname)
; -- AT THIS POINT, you should probably either restart the client or the PRINT SPOOLER
$index=$index+1
UNTIL LEN($keyname)=0
ENDIF
ENDFUNCTION

; -- Thanks Lonkero!
function DelPrinterConnections()
dim $c,$bk,$conn
$c=0
$bk='HKCU\Printers\Connections'
$conn=enumkey($bk,$counter)
while @error=0
$c=$c+1
$conn=delkey($bk+'\'+$conn)
$conn=enumkey($bk,$counter)
loop
endfunction



Thanks for any insight.

Kent
_________________________
Utilize these resources:
UDFs (Full List)
KiXtart FAQ & How to's