Verschiedene Methoden einen Drucker per Script zu verbinden.

Con2Prt.exe

Zu Windows NT Zeiten brachte Microsoft das Zero Administration Kit (ZAK) heraus. Dieses beinhaltete das Programm con2prt.exe. Bis Server 2008R2, bzw. bis Windows 10, habe ich das Programm erfolgreich eingesetzt, um Drucker über Logonscripte oder ein kleines AutoIt-Programm zu verbinden. Inzwischen kann man die Drucker auch über Gruppenrichtlinien verbinden. Wer eine Alternative sucht ist hier aber richtig.

Nutzung:

Die Exe Datei im Netlogon Verzeichnis ablegen, dann im Script/Programm

\\domain.name\Netlogon\con2prt /c \\Druckserver\FreigabenameDesDruckers /q

Das Programm gibt es hier zum Download (Nutzung auf eigene Gefahr).

Drucker auf Windowsebene verbinden

Wenn der Benutzer nicht in der Domäne ist, muss zuerst ein Laufwerksmapping durchgeführt werden, damit Windows ein Kerberos Ticket anfordert. Danach kann man die Drucker im Kontext dieses Benutzers hinzufügen. Dabei werden ab Server2008 auch die Treiber installiert. Per Powershell kann man das Objekt auch ansprechen. Hier ein Beispiel für VBScript.

'AddPrinter.vbs
ON ERROR RESUME NEXT
Set WshNet = CreateObject("WScript.Network")

' Bei Bedarf alle Netzwerkdrucker vorher löschen
Set wshPrn = wshNet.EnumPrinterConnections
For x = 0 To wshPrn.Count - 1 Step 2
    If Left(wshPrn.Item(x+1),2) = "\\" Then 
        wshNet.RemovePrinterConnection wshPrn.Item(x+1),True,True
Next 

wshnet.MapNetworkDrive "", "\\server\druckername1", False, "domäne\benutzername", "passwort"
wshnet.AddWindowsPrinterConnection "\\server\druckername1"
wshnet.AddWindowsPrinterConnection "\\server\druckername2" 
wshnet.SetDefaultPrinter "\\server\druckername1" 

Drucker auf DOS Ebene an einen Druckerport mappen

Nach Absetzen des Kommandos ist der Drucker für DOS Programme unter dem Druckerport LPT1 ansprechbar. Der Drucker wird aber nicht in WIndows verfügbar.

net use LPT1: \\server\druckername /user:domäne\benutzername passwort

Oder als .vbs Script. Doku zu AddPritnerConnection.

Set WshNet = CreateObject("WScript.Network") 
wshnet.AddPrinterConnection "LPT1", "\\server\druckername", True, "benutzername", "passwort"