Uitleg script:
In het eerste gedeelte wordt het IP-adres gesplitst het 3rde octet is belangrijk.
dit is het filliaalnummer.
In het tweede gedeelte wordt de naam van de printer opgesplitst.
het eerste gedeelte geeft aan welk land het is dus DE, NL, BE
het tweede gedeelte geeft weer het filiaalnummer aan bij DE164
daarna volgt de printer naam
nu zoekt het script de bijbehorende ip adres aan de printer naam en voegt
deze toe aan de gebruiker.
dit script werkt perfect alleen als ik dus nu een nieuwe printer moet toevoegen moet ik dit
handmatig doen op elke citrix server (op het moment al 8 srv ). dit script werkt fijn in een kleine omgeving maar het is nu niet meer beheerbaar.
Ik had als idee om in plaats van het register van de CTX servers uit te lezen dit via een filetje te doen die gewoon in de NETLOGON map staat. kan iemand mij op weg helpen.
;Read IP Address from temp file with clientinfo
$file="%temp%\clntnfo.tmp"
$ClntIPadr=ReadProfileString($file,"WFClientNFO","WFClientAddress")
; Debug only - ? "Client IP Address: " + $ClntIPadr
;Split the IP Address into 4 separated strings
$1st=LTrim(Split($ClntIPadr,'.')[0])
$2nd=LTrim(Split($ClntIPadr,'.')[1])
$3rd=LTrim(Split($ClntIPadr,'.')[2])
$4th=LTrim(Split($ClntIPadr,'.')[3])
;If the IP Subnet address is shorter then three characters then add zero's until the Subnet is tree characters long.
$zero1 = "0"
$zero2 = "00"
$length = Len($3rd)
$addip = "245"
$Index=0
:Loop1
$PrinterName[$index] = EnumKey("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Print\Providers\LanMan Print Services\Servers\$PrtServerReg\Printers\", $Index)
If @ERROR = 0
;Debug only - ? "Printer: " + $PrinterName[$index]
$LandCode = SubStr($PrinterName[$index],1,2)
$Filnr = SubStr($PrinterName[$index],3,3)
$Prtxx = SubStr($PrinterName[$index],9,2)
;Debug only - ? "LandCode: " + $LandCode
;Debug only - ? "Filiaalnr: " + $Filnr
;Debug only - ? "Printernr: " + $Prtxx
? "Printer: " + $PrinterName[$index]
If $3rd = $Filnr
$PrtCon = $LandCode + $Filnr + $Type + $Prtxx
If AddPrinterConnection ($PrtServer + $PrtCon) = 0 ;Add Printer
? "Added printer connection: " + $PrtServer + $PrtCon
If $Prtxx = "01"
If SetDefaultPrinter($PrtServer + $PrtCon) = 0 ;Set default printer
? "Set default printer to: " + $PrtServer + $PrtCon
EndIf
EndIf
EndIf
EndIf
$Index = $Index + 1
GoTo Loop1
EndIf
In het eerste gedeelte wordt het IP-adres gesplitst het 3rde octet is belangrijk.
dit is het filliaalnummer.
In het tweede gedeelte wordt de naam van de printer opgesplitst.
het eerste gedeelte geeft aan welk land het is dus DE, NL, BE
het tweede gedeelte geeft weer het filiaalnummer aan bij DE164
daarna volgt de printer naam
nu zoekt het script de bijbehorende ip adres aan de printer naam en voegt
deze toe aan de gebruiker.
dit script werkt perfect alleen als ik dus nu een nieuwe printer moet toevoegen moet ik dit
handmatig doen op elke citrix server (op het moment al 8 srv ). dit script werkt fijn in een kleine omgeving maar het is nu niet meer beheerbaar.
Ik had als idee om in plaats van het register van de CTX servers uit te lezen dit via een filetje te doen die gewoon in de NETLOGON map staat. kan iemand mij op weg helpen.
;Read IP Address from temp file with clientinfo
$file="%temp%\clntnfo.tmp"
$ClntIPadr=ReadProfileString($file,"WFClientNFO","WFClientAddress")
; Debug only - ? "Client IP Address: " + $ClntIPadr
;Split the IP Address into 4 separated strings
$1st=LTrim(Split($ClntIPadr,'.')[0])
$2nd=LTrim(Split($ClntIPadr,'.')[1])
$3rd=LTrim(Split($ClntIPadr,'.')[2])
$4th=LTrim(Split($ClntIPadr,'.')[3])
;If the IP Subnet address is shorter then three characters then add zero's until the Subnet is tree characters long.
$zero1 = "0"
$zero2 = "00"
$length = Len($3rd)
$addip = "245"
$Index=0
:Loop1
$PrinterName[$index] = EnumKey("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Print\Providers\LanMan Print Services\Servers\$PrtServerReg\Printers\", $Index)
If @ERROR = 0
;Debug only - ? "Printer: " + $PrinterName[$index]
$LandCode = SubStr($PrinterName[$index],1,2)
$Filnr = SubStr($PrinterName[$index],3,3)
$Prtxx = SubStr($PrinterName[$index],9,2)
;Debug only - ? "LandCode: " + $LandCode
;Debug only - ? "Filiaalnr: " + $Filnr
;Debug only - ? "Printernr: " + $Prtxx
? "Printer: " + $PrinterName[$index]
If $3rd = $Filnr
$PrtCon = $LandCode + $Filnr + $Type + $Prtxx
If AddPrinterConnection ($PrtServer + $PrtCon) = 0 ;Add Printer
? "Added printer connection: " + $PrtServer + $PrtCon
If $Prtxx = "01"
If SetDefaultPrinter($PrtServer + $PrtCon) = 0 ;Set default printer
? "Set default printer to: " + $PrtServer + $PrtCon
EndIf
EndIf
EndIf
EndIf
$Index = $Index + 1
GoTo Loop1
EndIf