Moin,
folgendermaßen haben wir die Druckereinrichtung für unsere Verwaltungen gelöst (OPSI ist bisher nur im Testeinsatz!).
Vorab zur Erklärung, unsere Verwaltungen haben mehr als 50 Drucker, weswegen eine komplette Einrichtung aller vorhandenen Drucker unsinnig ist.
Daher haben wir definiert das wir maximal 10 Drucker pro Rechner initial installieren.
Die Druckernamen sind definiert als D+SAP Druckernamen, daher bei den Scripten das vorangestellte D. Für jeden Drucker gibt es ein eigenes Script!
Als Auswahlparameter ist die Liste aller möglichen Drucker für Drucker1-10 hinterlegt.
Bei der Einrichtung setzt das Script nun die Werte Drucker 1-10 auf die Inivar Parameter und geht dann je Script in die entsprechende SUB Config des Druckers.
Wichtig ist das die Variablen der Hauptconfig mit in die Subconfigs geschleift werden, bzw. das zwischen der Einrichtung der Ports in der Registry und der Installation der Treiber der Spooler einmal neu gestartet werden muss.
Eine Uninstallmöglichkeit für einzelne Treiber habe ich bewusst nicht implementiert, jedoch werden geänderte Druckerscripte (Beispiel bei Nutzung eines anderen Druckertreibers), die jedoch denselben Druckernamen haben, beim nochmaligen Setup des Paketes aktualisiert!
Code: Alles auswählen
[Initial]
Message= <hier könnte ihr Nachricht stehen>
LogLevel=2
ExitOnError=false
ScriptErrorMessages=on
TraceMode=off
DefVar $Drucker01$
DefVar $Drucker02$
DefVar $Drucker03$
DefVar $Drucker04$
DefVar $Drucker05$
DefVar $Drucker06$
DefVar $Drucker07$
DefVar $Drucker08$
DefVar $Drucker09$
DefVar $Drucker10$
DefVar $Name_Drucker$
DefVar $Typ_Drucker$
DefVar $IP_Drucker$
DefVar $Port_Drucker$
DefVar $Driverpath_Drucker$
[Aktionen]
Set $Drucker01$ = IniVar("Drucker01")
Set $Drucker02$ = IniVar("Drucker02")
Set $Drucker03$ = IniVar("Drucker03")
Set $Drucker04$ = IniVar("Drucker04")
Set $Drucker05$ = IniVar("Drucker05")
Set $Drucker06$ = IniVar("Drucker06")
Set $Drucker07$ = IniVar("Drucker07")
Set $Drucker08$ = IniVar("Drucker08")
Set $Drucker09$ = IniVar("Drucker09")
Set $Drucker10$ = IniVar("Drucker10")
sub_install_nlprinter
[sub_install_nlprinter]
if not ($Drucker01$ = "Kein Drucker")
sub "%scriptpath%\subconfigs\"+"D"+$Drucker01$+".ins"
endif
if not ($Drucker02$ = "Kein Drucker")
sub "%scriptpath%\subconfigs\"+"D"+$Drucker02$+".ins"
endif
if not ($Drucker03$ = "Kein Drucker")
sub "%scriptpath%\subconfigs\"+"D"+$Drucker03$+".ins"
endif
if not ($Drucker04$ = "Kein Drucker")
sub "%scriptpath%\subconfigs\"+"D"+$Drucker04$+".ins"
endif
if not ($Drucker05$ = "Kein Drucker")
sub "%scriptpath%\subconfigs\"+"D"+$Drucker05$+".ins"
endif
if not ($Drucker06$ = "Kein Drucker")
sub "%scriptpath%\subconfigs\"+"D"+$Drucker06$+".ins"
endif
if not ($Drucker07$ = "Kein Drucker")
sub "%scriptpath%\subconfigs\"+"D"+$Drucker07$+".ins"
endif
if not ($Drucker08$ = "Kein Drucker")
sub "%scriptpath%\subconfigs\"+"D"+$Drucker08$+".ins"
endif
if not ($Drucker09$ = "Kein Drucker")
sub "%scriptpath%\subconfigs\"+"D"+$Drucker09$+".ins"
endif
if not ($Drucker10$ = "Kein Drucker")
sub "%scriptpath%\subconfigs\"+"D"+$Drucker10$+".ins"
endif
Dazu gehören dann die jeweiligen Druckerscripte
Code: Alles auswählen
; Dieses Script installiert den Drucker
; Druckername: D<Druckername>
; Druckertyp: Samsung CLP-350 Series
; IP <Drucker IP>
Set $Name_Drucker$ = "D<Druckername>"
Set $Typ_Drucker$ ="Samsung CLP-350 Series"
Set $IP_Drucker$ = "<Drucker IP>"
Set $Port_Drucker$ = "9100"
Set $Driverpath_Drucker$ ="%ScriptPath%\driver\samsung_clp-350\cl35c.inf"
Registry_install_Printport
winbatch_restart_spool
winbatch_install_Printer
[Registry_install_Printport]
OpenKey [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Monitors\Standard TCP/IP Port\Ports\IP_$IP_Drucker$]
Add "Protocol" = REG_DWORD:00000001
Add "Version" = REG_DWORD:00000001
Add "HostName" = ""
Add "IPAddress" = "$IP_Drucker$"
Add "HWAddress" = ""
Add "PortNumber" = REG_DWORD:$Port_Drucker$
Add "SNMP Community" = "public"
Add "SNMP Enabled" = REG_DWORD:00000001
Add "SNMP Index" = REG_DWORD:00000001
[winbatch_install_Printer]
rundll32 printui.dll,PrintUIEntry /dl /n "$Name_Drucker$" /q
rundll32 printui.dll,PrintUIEntry /if /b "$Name_Drucker$" /f "$Driverpath_Drucker$" /r IP_$IP_Drucker$ /m "$Typ_Drucker$" /z /u
[winbatch_restart_spool]
;Startet den Spool Dienst neu
net.exe stop Spooler
net.exe start Spooler
bzw. für einen Standard Windows Xp Treiber
Code: Alles auswählen
; Dieses Script installiert den Drucker
; Druckername: D<Druckername>
; Druckertyp: HP LaserJet 5L
; IP <Drucker IP>
Set $Name_Drucker$ = "D<Druckername>"
Set $Typ_Drucker$ ="HP LaserJet 5L"
Set $IP_Drucker$ = " <Drucker IP>"
Set $Port_Drucker$ = "9100"
Set $Driverpath_Drucker$ ="%Systemroot%\inf\ntprint.inf"
Registry_install_Printport
winbatch_restart_spool
winbatch_install_Printer
[Registry_install_Printport]
OpenKey [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Monitors\Standard TCP/IP Port\Ports\IP_$IP_Drucker$]
Add "Protocol" = REG_DWORD:00000001
Add "Version" = REG_DWORD:00000001
Add "HostName" = ""
Add "IPAddress" = "$IP_Drucker$"
Add "HWAddress" = ""
Add "PortNumber" = REG_DWORD:$Port_Drucker$
Add "SNMP Community" = "public"
Add "SNMP Enabled" = REG_DWORD:00000001
Add "SNMP Index" = REG_DWORD:00000001
[winbatch_install_Printer]
rundll32 printui.dll,PrintUIEntry /dl /n "$Name_Drucker$" /q
rundll32 printui.dll,PrintUIEntry /if /b "$Name_Drucker$" /f "$Driverpath_Drucker$" /r IP_$IP_Drucker$ /m "$Typ_Drucker$" /z /u
[winbatch_restart_spool]
;Startet den Spool Dienst neu
net.exe stop Spooler
net.exe start Spooler
Gruß
Alexander
P.S. man könnte noch hingehen und den Spoolerrestart in eine DosAsAnIcon Sektion schreiben, dann würde die commandline nicht mehr sichtbar auftauchen.