tommesy
Goto Top

Druckertreiber Einstellungen per Script

Hallo an alle,
ich habe mir ein Script geschrieben womit ich einen lokalen Druckertreiber installieren kann (per .inf) funktioniert auch ganz gut.

strComputer = "."  
    dip = InputBox("IP-Adresse eingeben: " &VbCRLF&VbCRLF&_  
                     "z.B. 192.168.5.180" , "IP-Adresse")  

dname = InputBox("Bitte Druckername eingeben: " &VbCRLF&VbCRLF&_  
                     "z.B. e-2505 Farbe" , "Druckername")  

Set objWMIService = GetObject("winmgmts:" _  
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")  
objWMIService.Security_.Privileges.AddAsString "SeLoadDriverPrivilege", True  

Install dip

' Start the install of the printer  

sub Install(strIP)
    InstallPrinterPort strIP
end Sub

Sub InstallPrinterPort(strIP)
' Erst prüfen ob der Port existiert   #########################  
    Set colInstalledPorts =  objWMIService.ExecQuery _
        ("Select Name from Win32_TCPIPPrinterPort")  
    For each objPort in colInstalledPorts
        If objPort.Name="IP_" & strIP then exit sub ' We have a result, so no need to add port  
    Next

' Neuen IP-Port erstellen   ###################################  
    Set objNewPort = objWMIService.Get _
        ("Win32_TCPIPPrinterPort").SpawnInstance_  
    objNewPort.Name = strIP
    objNewPort.Protocol = 1
    objNewPort.HostAddress = strIP
    objNewPort.PortNumber = "9100"  
    objNewPort.SNMPEnabled = False
    objNewPort.Put_
end Sub


'###################################################### 64Bit-Treiber inst.   
strBasePrinter = dname
strPrinterName = "Toshiba Universal Printer 2"  
strINFPath = "\Service-Tool\64bit\eSf6u.inf"  
strIPPort = dip
Set objShell = CreateObject("WScript.Shell")  
strCommand = "cmd /c c:\\windows\system32\rundll32 printui.dll,PrintUIEntry /if /b """ & strBasePrinter & """ /f " & strINFPath & " /r """ & strIPPort & """ /m """ & strPrinterName & """ & /Z" ' ,0,True  
objShell.Run strCommand, 1, True



Jetzt würde ich gerne noch die Einstellungen des Treibers per Script machen.
Mit einer Batch hatte ich es mit diese Befehlszeile gelöst:
%windir%\System32\RUNDLL32.EXE PRINTUI.DLL,PrintUIEntry /Sr /n "%Name%" /a "sw.dat" d u g 8 r

Den Druckernamen bekomme ich wohl noch hin, aber wie kann ich die Option a/ "sw.dat" d u g 8 r in vbs umsetzen? sw.dat ist die Datei wo die Einstellungen drin gespeichert sind.

strCommand = "cmd /c c:\\windows\system32\rundll32 printui.dll,PrintUIEntry /Sr /n """ & strPrinterName & """ ????? /a "sw.dat" d u g 8 r ?????
hab schon viel versucht aber es will nicht klappen. Hat einer einen heissen Tip für mich? Würde mich riesig freuen.
Grüße
Thomas

Content-ID: 358948

Url: https://administrator.de/contentid/358948

Ausgedruckt am: 23.11.2024 um 11:11 Uhr

chgorges
chgorges 22.12.2017 um 08:07:13 Uhr
Goto Top
https://www.gruppenrichtlinien.de/de/artikel/drucker-per-script-zuweisen ...

Im Zweifel murksen und im VBS eine separate Batch aufrufen.
emeriks
emeriks 22.12.2017 aktualisiert um 08:32:15 Uhr
Goto Top
Hi,
strCommand = "cmd /c c:\\windows\system32\rundll32 printui.dll,PrintUIEntry /if /b """ & strBasePrinter & """ /f " & strINFPath & " /r """ & strIPPort & """ /m """ & strPrinterName & """ & /Z" ' ,0,True
Ein "\" zuviel beim "C:\".
strINFPath mit Leerzeichen? Falls ja --> diesen auch in "". Edit: Auch nee, ich sehe. Schon mal einen absoluten Pfad für strINFPath probiert?
Was soll das Hochkomma am Ende nach den /Z" ?


E.

Edit:
Versuche "cmd.exe /k ..."
Dann bleibt das Fenster offen und Du kannst ggf. Ausgaben lesen.
Tommesy
Tommesy 22.12.2017 um 18:22:57 Uhr
Goto Top
Hi
Danke für die Antworten, hab´s jetzt mit einer TXT Datei gemacht aber schöner wäre es nur mit vbs gewesen.
@emeriks es ging ja nicht um diese Zeile...hab aber die Sachen korrigiert.

Es ging um diese Befehlszeile:
strCommand = "cmd /c c:\windows\system32\rundll32 printui.dll,PrintUIEntry /Sr /n """ & strPrinterName & """  ????? /a "sw.dat" d u g 8 r ?????   
und NUR das in den Fragezeichen. Hab da schon alles mögliche gemacht aber es klappt nicht.

Wenn noch einer einen Vorschlag hätte, würde ich mich freuen.

Grüße
Thomas
Dkayyy
Dkayyy 04.01.2018 aktualisiert um 10:14:22 Uhr
Goto Top
Hallo Tommesy,

ich hatte ne ganze Zeit lang, das gleich Problem wie du. Bei mir die Lösung, statt einer .dat eine .bin zu verwenden. Ich weiß auch nicht woran das liegt, funktioniert aber. Was du auch beachten musst, ist das jegliche Unterschiede am PC eine große rolle spielen. z.B.

- dat/.bin in Win7 gemacht // geht nicht auf Win 10
- Win7 Home auf Win7 Pro geht auch nicht
- teilweise geht es auch schon nicht, wenn ein neueres Windows Update drauf ist
- Sprache muss die gleiche sein
usw.

Habe mir mit der Zeit eine Datenbank von .bin Dateien angelegt für jegliche Betriebssysteme und deren Versionen.