Vorschlag wie man Drucker per Opsi installieren könnte?

IvicaE
Beiträge: 121
Registriert: 13 Sep 2016, 14:10

Re: Vorschlag wie man Drucker per Opsi installieren könnte?

Beitragvon IvicaE » 11 Aug 2017, 13:34

Ich bin gerade am Anpassen der Scripte an meine Drucker als auch an Treiber-Pfade und Dateinamen (da bei mir die Dateiendungen 'opsiscript' heissen und bei euch 'ins' muss ich das auch überall anpassen).

Dabei komme ich an die Stelle an welcher ich pro Drucker die INF-Datei zuweisen muss.
Wie finde ich heraus welche genau verwendet werden muss? Wir haben hier fast nur HP-Drucker in 3 verschiedenen Modellen (LaserJet 4000, 4050 und p4015) die wir aber immer per HP Universaltreiber installieren.
Ich habe den Universaltreiber nun mal entpackt und sehe lauter INF-Dateien und weiß nun nicht auf welche ich z.B. den HP Laser Jet p4015x zuweisen soll?

Irgendwo habe ich gelesen daß dies eigentlich egal ist weil Windows nach WinXP selber entscheidet welche INF passt und man nur die INF-Datei auswählen muss um den korrekten Pfad zu allen INF-Dateien anzugeben. Stimmt das? Greift diese Regel dann auch hier im OPSI auch so (wie gesagt wenn das so stimmt)? Wenn nicht, wie finde ich heruas welche INF die korrekte ist?

Schon mal im Voraus vielen Dank für eure Hilfe!

AlexKoch
Beiträge: 13
Registriert: 18 Mai 2015, 15:17
Kontaktdaten:

Re: Vorschlag wie man Drucker per Opsi installieren könnte?

Beitragvon AlexKoch » 11 Aug 2017, 14:37

Ich nehm dafür rundll32 mit DosInAnIcon.

Syntax und Paramter: https://technet.microsoft.com/de-de/library/ee624057(v=ws.10).aspx

Um z.B. einen Netzwerkdrucker von einem Druckserver hinzuzufügen (Serverzugriff muss natürlich erlaubt sein):
rundll32 printui.dll,PrintUIEntry /in /n "\\Servername\Printername"

Wieder entfernen, installieren mit .inf-Datei, installieren von lokalem Drucker usw. geht alles mit rundll32.

VG
Alex

IvicaE
Beiträge: 121
Registriert: 13 Sep 2016, 14:10

Re: Vorschlag wie man Drucker per Opsi installieren könnte?

Beitragvon IvicaE » 14 Aug 2017, 14:54

Ich versuche die ganze Zeit schon den Drucker per OPSI zu installieren.
Ich muss eine INF-Datei angeben und egal welche ich angebe, bekommei ch beim Installationsvorgang die Fehlermeldung:

Der Vorgang kann nicht abgeschlossen werden (Fehler 0x800f0214).

Unter dem angegebenen Pfad befinden sich keine anwendbaren Geräte-INF-Dateien.


So, ich habe per Such-Tool (ransack) den ganzen entpackten Ordner des Universaltreibers nach meinem Druckermodell inhaltlich durchsucht.
Suchfilter war die 'INF'-Endung auf Dateiebene und 'p4015' inhaltlich. Ich habe eine Trefferliste von 4 inf-Dateien erhalten (z.B. hpzipa23.inf) und diese
jeweils in einem Durchgang ausprobiert.

In der sub_install.opsiscript im Abschnitt (Prozedur) 'sub_setDriverPath'
folgendes gesetzt:

Code: Alles auswählen

[sub_setDriverPath]

;set path to driver files
;local drivers
Set $hp_universal_kpdl$='"c:\tmp\hp\hpzid4vp.inf"'
.
.
Set $DriverPath$ = '$hp_universal_kpdl$'


Wobei meine Pfadangabe-Variable '$hp_universal_kpdl$ natürlich vorher deklariert wurde.

So, meine Frage ist nun: welche INF-Datei muss ich angeben wenn ich Universaltreiber von HP nutze wenn ich mein

Laser Jet HP p4015x

installieren möchte?

Ich kann über die Vorgehensweise von @AlexKoch leider keine Infos ermitteln über die Drucker weil ich eine Fehlermeldung bekomme wenn ich

'rundll32 printui.dll PrintUIEntry' nutze.

Meien Syntax:
rundll32 printui.dll PrintUIEntry /e Druckername

(Druckername als FQDN als auch nur mit Name ausprobiert, mit und ohne Doppelt-Backslash und in keinem Fall hat es geklappt)

So, meine Frage ist nun: gibt es hier jemanden der auch Universaltreiber für HP-Drucker per OPSI installiert und kein Printserver nutzt?
Wenn ja: wie macht ihr das? Wenn nein: was kann ich tun um die richtigen INF-Dateien herauszufinden? In den Druckeinstellungen steht diesbezüglich nicht viel ausser in dem Druckertreiber-Menü unter
'INF-Name' -> 'printqueue.inf'
'INF-Abschnitt' -> 'NO_DRV_LOCAL'
'Hardware-IDs' ->
PRINTENUM\Hewlett-PackardHP_La27BB
PRINTENUM\LocalPrintQueue
Hewlett-PackardHP_La27BB
usbprint\hewlett-packardhp_co5005
hewlett-packardhp_co5005
usw.

Also nichts was mir sagt welche INF-Datei nun herangezogen wurde und was wie wo gemacht wurde vom Setup-Wizard des Universaltreibers.

boven
Beiträge: 9
Registriert: 30 Mai 2017, 08:46

Re: Vorschlag wie man Drucker per Opsi installieren könnte?

Beitragvon boven » 17 Aug 2017, 09:45

Grundsätzlich kannst du den Drucker erst einmal manuell installieren und dann schauen, wie der verwendete Treiber heißt.
Ich hab mal die PCL6 Treiber für deinen Drucker heruntergeladen und in der Datei hpcu196u.inf findet sich der Treibername "HP Universal Printing PCL 6".
Versuch es doch mal damit. Sinn des Universaltreibers ist es ja, einen Treiber für alle Geräte zu verwenden.

AlexKoch
Beiträge: 13
Registriert: 18 Mai 2015, 15:17
Kontaktdaten:

Re: Vorschlag wie man Drucker per Opsi installieren könnte?

Beitragvon AlexKoch » 17 Aug 2017, 11:59

@IvicaE: Der Befehl muss so aussehen: rundll32 printui.dll PrintUIEntry /e /n\\Clientname\Druckername (für einen lokalen Drucker).
Allerdings passiert da nichts anderes als dass die gui des Druckertreibers geöffnet wird.
Wenn du den Drucker lokal installiert hast kannst du eine Testseite drucken. Da müssten dann die Infos zur Treiberdatei mitgedruckt werden. Eventuell gibt Dir das einen Rückschluss darauf welches die richtige inf-Datei ist.
Gruß
Alex

IvicaE
Beiträge: 121
Registriert: 13 Sep 2016, 14:10

Re: Vorschlag wie man Drucker per Opsi installieren könnte?

Beitragvon IvicaE » 17 Aug 2017, 15:39

@boven @AlexKoch

Vielen Dank! Es hat geklappt und ich kann mittlerweile unsere HP-Drucker per OPSI installieren.

@all

Jetzt habe ich aber ein Folgeproblem:
Wir haben hier ca. 25 HP LaserJet-Netzwerkdrucker stehen.

Ich möchte nun bei der Installation abfragen welcher Druckername es ist und entsprechend die Werte setzen (wie im o.g. Script -> IP, Anschluss, usw.).
Gibt es im Winst auch die Möglichkeit auf 'IN' abzufragen?
Also

Code: Alles auswählen

if $SP$ in ("LJT002A", "LJT604A", "LJT604B", "usw. ~25")
   ;ja, es ist ein HP Drucker mit Universaltreiber
else
    ;nein, ist kein HP-Drucker. Andere Treiber verweisen usw..
endif


Sonst müsste ich ja 25x in einer Zeile auf 'if' abfragen und das ist schwer...

Des Weiteren habe ich das o.g. Script angepasst das es keine PropertyList mehr ist sondern einfacher Property, dafür 3x (printer1, printer2, printer3).
Wir haben pro PC mindestens 2 Drucker installiert (Hauptdrucker + Ausfalldrucker) und eventuell noch einen 3. Drucker (falls an diesem Arbeitsplatz notwendig: LaserColor-Drucker).
Ich will pro Drucker bestimmen können ob eine Testseite ausgedruckt werden soll oder nicht. Somit muss ich das o.g. Script so abändern das keine Property-List angelegt wird sondern ein Property-Wert pro Drucker und das 3x. Daher dann auch 3x das Property 'Testpage' (Testpage1, Testpage2, Testpage3). Somit kann ich dann pro Drucker setzen ob ich eine Testpage haben will oder nicht. Mit der Propertyliste würde das ja nicht gehen, richtig?
Ich müsste umfangreich prüfen ob die PropertyList der Drucker die gleiche Anzahl an Werten hat wie die der Testpage und dann 1:1 zuordnen usw.. und das ist schwammig.
Ausserdem habe ich in configed noch nicht bemerkt das ich eine Propertylist schön per Dropdownliste 'befüllen' kann (wenn es gehen sollte dann habe ich es noch nicht herausgefunden und dann wäre es auch sehr 'schwammig'). So kann ich einer Dripdownliste pro Property schön auswählen welchen Drucker ich haben möchte und kine Stringketten erstellen manuell mit Komma getrennten Werten o.ä.

Wenn ihr mich da belehren könnt und es doch schön und praktikabel gehen sollte, dann immer her damit... ;)

boven
Beiträge: 9
Registriert: 30 Mai 2017, 08:46

Re: Vorschlag wie man Drucker per Opsi installieren könnte?

Beitragvon boven » 18 Aug 2017, 10:57

Ich verstehe gerade nicht, wieso du die for-Schleife durch eine if-Kondition ersetzt hast.
Mit

Code: Alles auswählen

for %s% in $PrinterNames$ do sub_AddPrinter

werden die Drucker abgearbeitet, die du in der Property 'druckerliste' ausgewählt hast.
Die Sektion sub_AddPrinter führt die Sektion sub_SetInfo aus, in der du die Treiber,IP,Anschluss etc. pro Drucker festlegst. Da muss nicht zwischen Universaltreiber und anderen Treibern unterschieden werden.
Oder verstehe ich dich gerade falsch?

IvicaE
Beiträge: 121
Registriert: 13 Sep 2016, 14:10

Re: Vorschlag wie man Drucker per Opsi installieren könnte?

Beitragvon IvicaE » 21 Aug 2017, 11:20

@boven

Ich will mir die Option offen halten auch 'nicht-HP-Drucker' installieren zu können.
Daher will ich nicht ausschliesslich auf den HP Universal-Druckertreiber setzen. Momentan haben wir fast nur HP-Drucker bis auf 4 Kopierstationen welche Scannen, Faxen und Drucken können und welche von Kyocera kommen.
Wir haben 20-25 Drucker in der Firma (von HP) welche ich dann abfragen möchte. Ist es der Drucker1, Drucker2, Drucker3, ... Drucker25 -> HP Universaltreiber. Ist es Drucker26 -> irgend ein anderer Druckertreiber. Darum würde ich gerne eine Abfrage haben die mir eine ganze Liste an Druckern abfragen kann ohne jedes mal if $Druckername$ = Drucker1 or $Druckername = Drucker2 or (usw..) nutzen zu müssen.
Daherm eine Frage ob es eine 'IN'-Abfrage gibt. Wie ich das beim durchlesen der Winst-Beschreibung verstanden habe gibt es leider keine IN-Abfrage...


Zum Anderen:
Das Druckertemplate ist darauf ausgelegt ein StringList-Property anzubieten in welchem mehrere Drucker, die gleichzeitig installiert werden können, angeben zu können.
Ich weiß nicht ob ich was falsche mache, aber diese StringList-Property kann ich nicht per Dropdown-Liste schön 'befüllen'. Ich kann einen Drucker per Dropdown-Liste auswählen, will ich aber noch einen weiteren Drucker hinzufügen, so muss ich es manuell eintippen mit dem entsprechenden Trennzeichen (ist doch ein normales Kommazeichen, richtig?).
Da wir aber maximal 3 Drucker / Client installieren (meist nur 2 -> Hauptdrucker + Ausfalldrucker), lege ich mir lieber drei 'normale' Properties an die ich schön mit der Dropdown-Liste befüllen kann welche mir jeweils alle 25 vorhanden Drucker zum auswählen anbietet.
Wie gesagt: vielleicht liegt es ja auch an mir daß ich das so mit einer StringList-Property nicht schaffe?

IvicaE
Beiträge: 121
Registriert: 13 Sep 2016, 14:10

Re: Vorschlag wie man Drucker per Opsi installieren könnte?

Beitragvon IvicaE » 08 Mär 2018, 11:36

Hallo Leute,

nach langer Zeit mache ich mit dem Thema "Drucker per OPSI installieren" weiter.
Zwischenzeitlich habe ich alle Netzwerkdrucker (HP + Kyocera) in OPSI verfügbar gemacht und alles funktioniert problemlos mit diesen Druckern.

Jetzt möchte ich einige USB-Drucker installieren, um genau zu sein ZEBRA ZD410 Barcodedrucker die per USB angeschlossen werden.

Jetzt meine Frage: gibt es für USB-Drucker eine spezielle Vorgehensweise? Das mit der Portangabe per PrintUI.exe funktioniert wohl mit dem Port "USB001" nicht. Zumindest nicht bei mir. Ich gehe mal davon aus das es damit zusammenhängt das USB speziell ist und erst durch Windows angelegt wird wenn das Gerät am USB angeschlossen wird. Treiber sollten aber vorher installiert werden, sprich: dem OS zur Verfügung gestellt werden.

Zebra Treiber, zumindest die ZebraDesign-Treiber (also original vom Hersteller und nicht von Drittanbieter wie 'nicelabel' oder 'Seagull') bieten auch eine Treiber-Installation per Kommandozeile an, die aber auch mit USB-Anschlüssen nicht funktionieren (zumindest nicht bei mir) und Informationen diesbezüglich gibt es fast nirgendwo zu finden im Internet.

Da es jedoch auch vorkommen kann daß bei uns auch Desktop'-Drucker per USB angeschlossen werden, würde mich das sowieso interessieren ob man dies per OPSI realisieren kann ? Wenn ja, wie macht man das?