Gast haeuptling1977 Geschrieben 27. April 2010 Melden Teilen Geschrieben 27. April 2010 Hallo zusammen, ich habe ein kleines Problem mit einem vorhanden Script, dass ich jetzt umschreiben soll. Wir haben hier verschiedene Drucker im Netzwerk. Die sind auf einem Server eingerichtet und freigegeben. Diese jetzt per VBS auf allen Clients einzurichten ist nicht das Problem. Wir haben nur das Problem, dass auf diese Art ein bestimmtes Programm nicht richtig druckt. Jetzt wollen wir alle Drucker als TCP/IP Drucker auf allen Clients eingerichten. Ich komme aber nicht so richtig weiter. Wir haben Druckergruppen, über die geregelt wird, welcher Rechner welchen Standarddrucker bekommt. Ich habe jetzt eine bat-Datei, in der ich die Treiber auf den PC´s installiere und auch alle Drucker eingerichtet bekomme. Ich möchte aber über die Drcukergruppe definieren, welcher Drucker bei welchem Rechner der Standarddrucker ist. Hier mal der "alte" Code: ' Hilfsvariablen zur Speicherung des vollqualifizierten Computer- und Druckernamens Dim computer Dim drucker Dim benutzer Dim druckerListe ' Konstanten fr den Druckserver und die OU der Druckergruppe ' Diese Konstanten müssen für die jeweilige Domäne angepasst werden! serverName = "DCBN01" strOUGrp = "ou=drucker,ou=gruppen,dc=consult,dc=local" ' Bei Bedarf strGrpNT und lokalerPort auskommentieren strGrpNT = ".Testgruppe" lokalerPort = "LPT2" ' Verbindung zur Netzwerkkomponente des Windows Scripting Hosts herstellen Set WshNetwork = WScript.CreateObject("WScript.Network") ' Liste aller Drucker Set druckerListe = WshNetwork.EnumPrinterConnections ' Falls lokale Drucker vorhanden (Notebooks), keine Fehlermeldung rausbringen On Error Resume Next ' Lösche alle vorhandenen Drucker an der WKS, die über das Script eingebunden wurden For i = 0 to druckerListe.Count - 1 Step 2 ' Wenn lokalerPort vorhanden, löschen if druckerListe.Item(i) = lokalerPort Then WshNetwork.RemovePrinterConnection druckerListe.Item(i), true, true Else WshNetwork.RemovePrinterConnection druckerListe.Item(i+1) , true, true End If Next ' FQN des aktuellen Computers auslesen Set objSysInfo = CreateObject("ADSystemInfo") computer = objSysInfo.Computername ' Benutername auslesen benutzer = WshNetwork.UserName ' Durchlaufe die OU For each druckerGruppe in GetObject("LDAP://"& strOUGrp) ' Baue Druckernamen zusammen drucker = "\\" & serverName & "\" & Mid(druckerGruppe.Name,8,Len(druckerGruppe.Name)) ' Verbinde Drucker WshNetwork.AddWindowsPrinterConnection drucker ' Wenn Computer Mitglied (also Standarddrucker), dann zuweisen If druckerGruppe.IsMember("LDAP://" &computer) Then WshNetwork.SetDefaultPrinter drucker ' Wenn Gruppe bzw. Benutzer nicht vorhanden, keine Fehlermeldung rausbringen On Error Resume Next ' Wenn Benutzer Mitglied von strGrpNT ist, lokalerPort zuweisen if GetObject("WinNT://"& WshNetwork.UserDomain &"/" & strGrpNT).IsMember("WinNT://"& WshNetwork.UserDomain &"/" & benutzer) Then ' lokalerPort nur dann zuweisen, wenn die Bedingung oben erfüllt wird! ' durch das "on error resume next" wird zwar keine Fehlermeldung mehr rausgebracht, lokalerPort wird dennoch zugewiesen! if err.number = 0 Then WshNetwork.AddPrinterConnection lokalerPort, drucker End If End If End If next Vielen Dank für eure Hilfe. Zitieren Link zu diesem Kommentar
NilsK 2.934 Geschrieben 27. April 2010 Melden Teilen Geschrieben 27. April 2010 Moin, Wir haben nur das Problem, dass auf diese Art ein bestimmtes Programm nicht richtig druckt. Jetzt wollen wir alle Drucker als TCP/IP Drucker auf allen Clients eingerichten. Vorsicht - dieser Workaround kann euch erhebliche Probleme einhandeln! Ein TCP/IP-Drucker ist logisch betrachtet ein lokaler Drucker. Der Client umgeht damit den Druckserver und dessen Spooling und Jobsteuerung. Zudem benötigt er einen lokal installierten Druckertreiber. Bevor ihr nun die Probleme eines Programms umgeht, indem ihr zahlreichen anderen Programmen und Prozessen ein neues Problem beschert, solltet ihr lieber das eigentliche Problem lösen. Gruß, Nils Zitieren Link zu diesem Kommentar
Gast haeuptling1977 Geschrieben 27. April 2010 Melden Teilen Geschrieben 27. April 2010 Hi NilsK, wir können das eigentliche Problem nicht beheben. Wir nutzen hier Citrix (Terminalclient). Wenn wir aus einem Programm auf Citrix drucken, kommt eine falsche Schriftart raus. Die Firma, über die wir Citrix nutzen, kann leider keinen Fehler finden. Das das dann lokale Durcker sind, ist uns vollkommen bewusst. Wir haben einen Test gemacht und kein Programm hat dadurch ein Problem. Gruß Jens Zitieren Link zu diesem Kommentar
NilsK 2.934 Geschrieben 27. April 2010 Melden Teilen Geschrieben 27. April 2010 Moin, die VBS-Methode "SetDefaultPrinter" funktioniert m.W. nur bei Netzwerkdruckern. Sieh dir mal dies hier an: rundll32 printui.dll,PrintUIEntry /? Gruß, Nils Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.