[XP] Printers installeren via CLI via JetDirect

Pagina: 1
Acties:

  • eghie
  • Registratie: Februari 2002
  • Niet online

eghie

Spoken words!

Topicstarter
We hebben een netwerk met een aantal Windows computers en een aantal printers en een Linux server. Nu hangt dit via Samba in een domein. Nu zijn die printers, netwerk printers, die allemaal JetDirect ondersteunen. Nu wil ik niet via Samba de printers installeren en dan op de werkstations, maar rechtstreeks. Dit wil ik doen, omdat ik nogal wat negatieve ervaringen heb, om het via Samba te laten lopen.

Nu wil ik dus die printers installeren via een login script. Dit is gewoon een .bat script. Als je op internet gaat zoeken, naar hoe je die printers installeert via CLI, kom je eigenlijk altijd tegen dat het via UNC paden gaat, dus via Samba. Deze printers ondersteunen dat zelf niet en ik wil het dus niet via de server laten lopen.

Wat moet er gebeuren om een printer te installeren:
• Drivers moeten worden geinstalleerd worden op de werkstation.
• De TCP/IP poort moet aangemaakt worden, om te weten waar de printer staat.
• Een printer moet aangemaakt worden en aan de goede TCP/IP poort gekoppeld worden.

Drivers installeren
Om de drivers te installeren heb ik het volgende gevonden:
rem Driver installatie, zie http://www.msfn.org/board/index.php?showtopic=99066
rem en http://msdn2.microsoft.com/En-US/library/aa376957.aspx
rundll32 setupapi,InstallHinfSection DL3110CN.PPD_I386 128 %DRIVERSPATH%\dell3110cn\dlps3bei.inf

Dit werkt wel mooi, alleen krijg hier nog een permission denied, terwijl het wel in een login script loopt, maar dit vogel ik nog wel uit. Het lijkt wel te werken om de printer drivers te installeren.

Een TCP/IP poort aanmaken
Om een TCP/IP poort aan te maken, heb ik dit eerst via de printer wizard gedaan en ondertussen het register in de gaten gehouden. Toen heb ik de goede gegevens uit het register gehaald en in een .reg bestand gezet. Deze kan succesvol in het register toegevoegd worden, via de volgende regel:
rem printer poorten toevoegen
regedit /S %NETLOGONPATH%\printers.reg

En dit is de inhoud van het .reg bestand:
code:
1
2
3
4
5
6
7
8
9
10
11
12
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Monitors\Standard TCP/IP Port\Ports\IP_172.16.8.5]
"Protocol"=dword:00000001
"Version"=dword:00000001
"HostName"=""
"IPAddress"="172.16.8.5"
"HWAddress"=""
"PortNumber"=dword:0000238c
"SNMP Community"="public"
"SNMP Enabled"=dword:00000000
"SNMP Index"=dword:00000001

Dit geeft de goede poort. Hierna moet ik wel even de printer spooler herstarten, zodat hij de nieuwe printerpoort herkent:
rem Printer spooler herladen, om nieuwe poort te laden
net stop "Print Spooler"
net start "Print Spooler"

Dit werkt prima.

Printer toevoegen en koppelen aan poort
Nu komt het grote probleem. Ik krijg die printer niet via de CLI aan de poort gekoppeld. Ik heb al tools geprobeerd als con2prt en adprintx. Ook heb ik KIX geprobeer, maar AddPrinterConnection werkt alleen met UNC paden. Ook via WMI is het me nog niet gelukt. Uiteraard heb ik het ook via rundll geprobeerd, waarvan hier oa de 2 belangrijkste:
rem Voor commentaar: rundll32 printui.dll,PrintUIEntry /?
rundll32 printui.dll,PrintUIEntry /z /r "IP_172.16.8.5" /Y /u /n "172.16.8.5" /q
rundll32 printui.dll,PrintUIEntry /u /b "lokaal" /r "lokaal" /m "Dell 3110cn Lokaal" /n "172.16.8.5" /Z

Deze commando's werken beide niet. Commando is niet goed volgens Windows of kan drivers niet vinden, of naam is niet goed. Zelfde commando geeft sommige verschillende output. En het is vies lastig om dit goed te debuggen. Uiteraard heb ik deze pagina er ook bij gehad: How to add printers with no user interaction in Windows

Het liefst doe ik dit zooitje allemaal in C# .NET. Aangezien ik uiteindelijk het login script in .NET wil ga bouwen, waar ik al een basis voor heb. Die commando's kan ik allemaal wel via .NET uitvoeren, dus als dat werkt, lukt dat ook wel. Maar het liefst via WMI achtige interface ofzo, of via .NET of Win32 API.

Heeft hier iemand wel een goede oplossing om die printers succesvol te installeren? Al is het C++, C#, VBS, KiX of batch, maakt me niet uit.

Hier ook nog een link, om printers te installeren via KiX (via IP ipv UNC paden): http://www.kixtart.org/fo...bb=showflat&Number=170281

[ Voor 2% gewijzigd door eghie op 28-04-2008 14:42 . Reden: info wat geupdate ]


  • sanfranjake
  • Registratie: April 2003
  • Niet online

sanfranjake

Computers can do that?

(overleden)
prnadmin.dll uit de resource kit zie ik hierboven niet voorbij komen, had je die gezien? Zowel 2000/2003, er zit een document met voorbeeldscriptjes in prnadmin.doc :)
HOW TO: Programmatically Create a Printer and Printer Port by Using PrinterAdmin (Prnadmin.dll) with a Visual Basic Script in Microsoft Windows 2000

Mijn spoorwegfotografie
Somda - Voor en door treinenspotters


  • eghie
  • Registratie: Februari 2002
  • Niet online

eghie

Spoken words!

Topicstarter
sanfranjake schreef op vrijdag 13 juli 2007 @ 11:58:
prnadmin.dll uit de resource kit zie ik hierboven niet voorbij komen, had je die gezien? Zowel 2000/2003, er zit een document met voorbeeldscriptjes in prnadmin.doc :)
HOW TO: Programmatically Create a Printer and Printer Port by Using PrinterAdmin (Prnadmin.dll) with a Visual Basic Script in Microsoft Windows 2000
Bedankt. :)

Nee, die was ik inderdaad nog niet tegen gekomen. Ik ga hier eens mee stoeien. Als ik zo bekijk, kun je hier wel printers toevoegen die via socket verbindingen werken.