Here's the complete script I'm playing with:
Code:
COLOR w+/b
break on
$array=printerlist()
? "Error: " + @error
;? "Number of printers: " + ubound($array) + 1
? "Number of Printers: " + (val(ubound($array)) + 1)
for each $printer in $array
? $printer
next
;if delprinterconnection($printer) = 0
; ? "Deleted printers!"
;else
; ? "Unable to remove printers!"
;endif
;if addprinterconnection("\\Calvin\Canon") = 0
; ? "Added printer \\Calvin\Canon"
;else
; ? "ERROR: Unable to add printer \\Calvin\Canon!"
;endif
;if setdefaultprinter("\\Calvin\Canon") = 0
; ? "Default printer is now set to \\Calvin\Canon"
;else
; ? "ERROR: Unable to set a default printer!"
;endif
EXIT
Function Printerlist(optional $remotepc,optional $displaymode)
dim $service,$printer,$printers,$printerdesc
if $remotepc=""
$remotepc='\\'+ @wksta
else
if not left($remotepc,2)="\\"
$remotepc='\\' + $remotepc
endif
endif
$Service=GetObject("winmgmts:{impersonationLevel=impersonate}!" + $remotepc +
"\root\cimv2")
; if not @error=0
; exit @error
; endif
cerror @error " " @serror
$Printers=$service.execquery ('select * from Win32_Printer')
for each $printer in $printers
select
case $displaymode=1
if $printerdesc=""
$printerdesc=$printer.name + "," + $printer.portname
else
$printerdesc=$printerdesc + "|" + $printer.name + "," + $printer.portname
endif
case $displaymode=0
if $printerdesc=""
$printerdesc=$printer.name
else
$printerdesc=$printerdesc + "|" + $printer.name
endif
endselect
next
$printerlist=split($printerdesc,"|")
endfunction
Function Cerror()
exit Iif(@error<0,VAL("&"+Right(DecToHex(@error),4)),@error)
Endfunction