Seite 1 von 2

Drucker implementieren über Opsi

Verfasst: 10 Feb 2009, 15:19
von mube
Hi, ich bräuchte mal eure Hilfe. Ich möchte alle Drucker die wir hier haben über Opsi installieren lassen. Gibt es hierfür eine Möglichkeit in Opsi. Drucker hängen fast alle im Netzwerk und haben entweder eine Interne Lankarte oder einen Printerport dran. Drucker sind unterschiedlich.

Re: Drucker implementieren über Opsi

Verfasst: 11 Feb 2009, 10:19
von wolfbardo
Hallo mube,
mube hat geschrieben:Hi, ich bräuchte mal eure Hilfe. Ich möchte alle Drucker die wir hier haben über Opsi installieren lassen. Gibt es hierfür eine Möglichkeit in Opsi. Drucker hängen fast alle im Netzwerk und haben entweder eine Interne Lankarte oder einen Printerport dran. Drucker sind unterschiedlich.
eine Möglichkeit ist unter

http://www.opsi.org/opsi_wiki/Printer

beschrieben.

Falls die Installation mit dem pnmgr.vbs fehlschlaegt, so schafft in der Regel

Code: Alles auswählen

[DosInAnIcon_rundll]
rundll32 printui.dll,PrintUIEntry /q /if /x /n "" /b "$MyPrinterNameIp$" /m "$PrinterNameInInfFile$" /r "$PrinterPort$" /f "$InfFile$" /l "$Path2InfFile$"
Abhilfe.

Gruss
Bardo Wolf

Re: Drucker implementieren über Opsi

Verfasst: 11 Feb 2009, 11:20
von mube
Danke wolfbardo für die Antwort. Sorry aber, ich konnte nicht herausbekommen wo ich die IP Adresse für den Printerport eingeben muß.
Nehmen wir mal an meine IP für den Printerport ist die 192.168.1.20. Wo muß ich das denn eingeben.
Wäre dir sehr dankbar, wenn du mir auch noch einen Tipp geben könntest
Danke

Re: Drucker implementieren über Opsi

Verfasst: 12 Feb 2009, 13:31
von wolfbardo
Hallo mube,

Hallo mube,
mube hat geschrieben: Sorry aber, ich konnte nicht herausbekommen wo ich die IP Adresse für den Printerport eingeben muß.
Nehmen wir mal an meine IP für den Printerport ist die 192.168.1.20. Wo muß ich das denn eingeben.
Die IP kann man im configed angeben.

Code: Alles auswählen

set $IpNumbers$ = IniVar ("Brother_MFC_8840_PCL")
naheres ueber syntax findet sich im winsthandbuch und im opsi-handbuch


Eine Testversion gibt es sogar als opsi-Paket

http://download.uib.de/opsi3.3/produkte ... 2.0-1.opsi


Gruss
Bardo Wolf

Re: Drucker implementieren über Opsi

Verfasst: 23 Feb 2009, 09:21
von a.schnober
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.

Re: Drucker implementieren über Opsi

Verfasst: 06 Aug 2009, 13:20
von JTR
Hi,

ich bin auch gerade dabei, die Druckerimplementierung zur lösen. Das Skript von a.schnober finde ich dafür schonmal sehr gut und verwende es auch für die meisten Drucker bei uns. Nun haben wir aber auch ein paar Drucker bei uns, die an LPT1 angeschlossen werden. Nun wollte ich fragen, wie ich das Skript denn abändern müsste, damit als Anschluss LPT1 genommen wird und kein neuer für IP angelegt wird?
Wäre super, wenn mir da jemand helfen könnte :)

Danke schonmal!

MFG
JTR

Re: Drucker implementieren über Opsi

Verfasst: 06 Aug 2009, 19:44
von matth46
IP-Druckerports lassen sich übrigens auch so anlegen:

Code: Alles auswählen

cscript %SYSTEMROOT%\system32\prnport.vbs -a -r IP_$IP$ -h $IP$ -o raw -n 9100
Voraussetzung hierbei ist, das die Ausführung von WSH-Skripts erlaubt ist. Lässt sich auch temporär aktivieren:

Code: Alles auswählen

[Registry_TurnWSH_on]
;schaltet WSH auf "enable"
openkey [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Script Host\Settings]
set "Enabled" = REG_DWORD:1

... Installations-Aktionen...

[Registry_TurnWSH_off]
;schaltet WSH auf "disable"
openkey [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Script Host\Settings]
set "Enabled" = REG_DWORD:0
Schon vorhandene Druckerports lassen sich ja mit dem Schalter

Code: Alles auswählen

/r "PORTNAME"
übergeben (siehe oben), also in deinem Fall mittels

Code: Alles auswählen

/r "LPT1:"

Re: Drucker implementieren über Opsi

Verfasst: 07 Aug 2009, 11:02
von JTR
Hi,

danke für deine Antwort. Funktioniert einwandfrei :)

Gruß
Roland

Re: Drucker implementieren über Opsi

Verfasst: 07 Aug 2009, 13:45
von d.oertel
Hi,

siehe auch:
http://www.opsi.org/opsi_wiki/Printer

gruss
d.oertel

Re: Drucker implementieren über Opsi

Verfasst: 10 Aug 2009, 17:58
von Anakim
Hy,

wollte noch mal zwei ganz zwei andere Ansätze aufführen, welche ich beide gelegentlich verwende.

1) Zum einen bei einer vorhandenen Domäne werden unsere Drucker per Script zugewiesen, dass schafft flexibilität und einfaches zentrales verwalten.

Hier mal ein Auszug aus unserem Loginscript (recht einfach gehalten, aber funktioniert)

Code: Alles auswählen

REM Paramter und Dateien abfragen
If not Exist %systemroot%\system32\con2prt.exe Copy %logonserver%\netlogon\con2prt.exe %sysapps%

rem **  diese Drucker stehen allen Mitgleidern zur Verfügung **
rem **  con2prt Optionen: /c = connect; /cd= connect default; /f = lösche vorhandene
echo User aus der Gruppe RBA\EDV erkannt... Drucker werden zugewiesen..
%logonserver%\netlogon\con2prt /f
%logonserver%\netlogon\con2prt /cd \\XXX\"LEX510C"
%logonserver%\netlogon\con2prt /c \\XXX\"Magic Color EDV"
%logonserver%\netlogon\con2prt /c \\XXX\"NDMMV"
Es werden dazu con2prt benötigt welches erst kopiert wird, falls nicht vorhanden.

2) Oder aber man verwendet den "Microsoft Printer Migratior". Dieser funktionert wie folgt:
  • 1. Ein Masterplatz wird abgezogen, dort sollte die Drucker vorhanden sein, welche man verweden möchte (z.B. innerhalb der Abteilung). Der MPM packt dann alle Treiber und Druckereinstellungen in eine ausführbare Datei.
    2. per Opsi diese bei der Installation installieren lassen, man könnte dann per Optionsschalter z.B. die verschiedenen Pakete auswählen, die man auf der Kiste haben möchte
Der Vorteil bei dieser Variante ist, dass es keine Probleme mit Treiber gibt, da alles relevante sauber mitgenommen wird.

Grüße
Anakim