We ran into a situation yesterday, where we had to look through the printer drivers and files that are installed on our Citrix Servers in the Farm.. Anyway, you need the LOGGER() UDF to complete this -
Logging in a Citrix Farm -
Code:
CLS
BREAK ON
FOR EACH $i IN Split('01 02 03 05 06 07 08 09')
$srvname='CITRIX'+$i
$srv="\\"+$srvname+"\HKLM\SYSTEM\CurrentControlSet\Control\Print\Environments\Windows NT x86\Drivers\Version-2\"
$index=0
DO
$keyname=ENUMKEY($srv,$index)
$drv=READVALUE($srv+$keyname,'Data File')
$logdata='\\'+$srvname+','+$keyname
LOGGER('H:\CitrixPrinters.csv',$logdata+@crlf)
FOR EACH $fl IN SPLIT(READVALUE($srv+$keyname,'Dependent Files'),'|')
IF LEN($fl)>0
$companyname=GETFILEVERSION('\\'+$srvname+'\admin$\system32\spool\drivers\w32x86\'+$fl,"CompanyName")
$fileversion=GETFILEVERSION('\\'+$srvname+'\admin$\system32\spool\drivers\w32x86\'+$fl,"FileVersion")
ENDIF
$logdata=','+','+$fl+','+$companyname+','+$fileversion
LOGGER('H:\CitrixPrinters.csv',$logdata+@crlf)
NEXT
$dep=""
$companyname=""
$fileversion=""
$index = $index + 1
UNTIL LEN($keyname)=0
NEXT
Specific Print Server (Windows 2000 Example) -
Code:
CLS
BREAK ON
$srvname='SERVER'
$srv="\\"+$srvname+"\HKLM\SYSTEM\CurrentControlSet\Control\Print\Environments\Windows NT x86\Drivers\Version-3\"
$index=0
DO
$keyname=ENUMKEY($srv,$index)
$drv=READVALUE($srv+$keyname,'Data File')
$logdata='\\'+$srvname+','+$keyname
LOGGER('H:\Printers.csv',$logdata+@crlf)
FOR EACH $fl IN SPLIT(READVALUE($srv+$keyname,'Dependent Files'),'|')
IF LEN($fl)>0
$companyname=GETFILEVERSION('\\'+$srvname+'\admin$\system32\spool\drivers\w32x86\3\'+$fl,"CompanyName")
$fileversion=GETFILEVERSION('\\'+$srvname+'\admin$\system32\spool\drivers\w32x86\3\'+$fl,"FileVersion")
ENDIF
$logdata=','+','+$fl+','+$companyname+','+$fileversion
LOGGER('H:\Printers.csv',$logdata+@crlf)
NEXT
$dep=""
$companyname=""
$fileversion=""
$index = $index + 1
UNTIL LEN($keyname)=0
HTH,
Kent