Thorre 10 Geschrieben 18. Mai 2005 Melden Teilen Geschrieben 18. Mai 2005 Hallo zusammen Wie kann ich Drucker abhängig der Gruppenzugehörigkeit verbinden? Mit diesem Script werden leider immer alle Drucker verbunden und ich komme nicht auf den Fehler. Hat jemand eine Idee? Gruss Thorre Set Network = WScript.CreateObject("WScript.Network") If InStr(strGroups,G_IT) Then Network.AddWindowsPrinterConnection "\\PrintServer\kempr0002" Network.AddWindowsPrinterConnection "\\PrintServer\kempr0003" End If If InStr(strGroups,G_Sales) Then Network.AddWindowsPrinterConnection "\\PrintServer\kempr0003" Network.AddWindowsPrinterConnection "\\PrintServer\kempr0001" End If If InStr(strGroups,G_Public) Then Network.AddWindowsPrinterConnection "\\PrintServer\kempr0005" Network.AddWindowsPrinterConnection "\\PrintServer\kempr0001" End If Zitieren Link zu diesem Kommentar
Egli 10 Geschrieben 18. Mai 2005 Melden Teilen Geschrieben 18. Mai 2005 Hallo, willst du unbedingt mit wsh arbeiten? Wenn nicht kannst du mit kix32 prima Gruppenzugehörigkeiten abfragen und das evtl. mit rundll32 printui.dll,PrintUIEntry den Drucker zuweisen. Über Gruppenrichtlinien und rundll32 lässt sich das Problem auch angehen. Zitieren Link zu diesem Kommentar
Kerstin 10 Geschrieben 18. Mai 2005 Melden Teilen Geschrieben 18. Mai 2005 rundll32 ist schon genial, so binde ich die auch ein, aber inwiefern machst du das über GPOs? Zitieren Link zu diesem Kommentar
domi974 10 Geschrieben 18. Mai 2005 Melden Teilen Geschrieben 18. Mai 2005 Hallo, wir haben ein kleines Script gebastelt, was die Drucker verbindet und abhängig von der Mitgliedschaft der Computer den Standarddrucker setzt. Zusätzlich werden die Drucker jedesmal gelöscht und neu erstellt. Vielleicht hilft es Dir ja weiter :) ' if this works it was written by Dominique and Tobias '############################################################################################### '# # '# Mit diesem Script werden die Drucker im Netzwerk eingebunden. Als erstes werden alle # '# bestehenden Drucker gelöscht und danach installiert. Abhängig in welcher Gruppe sich # '# der Computer befindet, wird der Standarddrucker gesetzt. Zusätzlich hat man die # '# Möglichkeit dem Standarddrucker einen lokalen Port zuzuweisen. Dies kann beispielsweise # '# bei DOS-Programmen notwendig sein. # '# # '# Update: Lokale Drucker, beispielsweise bei Notebooks werden nicht gelöscht! # '# # '############################################################################################### '############################################################################################### '# # '# Version 1.2 25.4.2005 # '# # '############################################################################################### ' Hilfsvariablen zur Speicherung des vollqualifizierten Computer- und Druckernamens Dim computer Dim drucker Dim benutzer Dim druckerListe ' Konstanten für den Druckserver und die OU der Druckergruppe ' Diese Konstanten müssen für die jeweilige Domäne angepasst werden! serverName = "Servername" <-- anpassen strOUGrp = "ou=drucker,ou=gruppen,dc=domäne,dc=local" <-- anpassen ' Bei Bedarf strGrpNT und lokalerPort auskommentieren strGrpNT = "Gruppe" 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)) Zitieren Link zu diesem Kommentar
domi974 10 Geschrieben 18. Mai 2005 Melden Teilen Geschrieben 18. Mai 2005 2. Teil ' 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 Zitieren Link zu diesem Kommentar
NightFlier 10 Geschrieben 17. Juni 2005 Melden Teilen Geschrieben 17. Juni 2005 hallo, nach langer suche hab ich endlich ein vbs-script gefunden das ungefähr meinen vorstellungen gerecht wird. das von domi ist schon ziemlich gut. nur hätte ich gerne, dass das script die gruppenzugehörigkeit des users prüft und dann den entsprechenden drucker verbindet. das script von domi verbindet mir alle drucker auf dem printserver. hab es schon selber versucht, aber da meine vbs kenntnisse ziemlich gering sind bekomm ich es nicht hin. zur situation: wir haben für unsere serverfarm neue server bekommen. für die printserver muß ich die computernamen ändern. deswegen brauch ich ein script das mir die drucker verbindet, sonst muß ich an ungefähr 1200 clients die drucker manuell einrichten. hab auch schon über kix32 nachgedacht! da wir eine behörde sind, darf ich leider nicht immer software einsetzten wie ich es gerne hätte. jetzt bin ich auf euch angewiesen und für jede hilfe oder anregung dankbar! Zitieren Link zu diesem Kommentar
Gimbar 10 Geschrieben 23. Juli 2005 Melden Teilen Geschrieben 23. Juli 2005 [edity by GimbaR] sry, war nen bisl verpeilt und hab net gechekt, dass mit "nach langer suche hab ich endlich ein vbs-script gefunden das ungefähr meinen vorstellungen gerecht wird" das cript hier gemeint war :D [/edit] Zitieren Link zu diesem Kommentar
wrh- 10 Geschrieben 23. Juli 2005 Melden Teilen Geschrieben 23. Juli 2005 hi leute, ja das script (VB) sieht doch sehr gut aus. eine frage hätt ich da noch..da ich selber probleme hab beim einbinden oder zuweisen von printer zu domainuser..! also ich würd gerne die drucker über IP Port zuweisen, was ja mit rundll zu schaffen sein müsste. aber dort bekomm ich probleme, weil der IP PORT nich existiert. is das eventuell auch mit VB SCRIPT oben zu schaffen?? Zitieren Link zu diesem Kommentar
Gimbar 10 Geschrieben 23. Juli 2005 Melden Teilen Geschrieben 23. Juli 2005 moin, ich hab nocmal ne Frage. Was genau muss ich hier eintargen? strOUGrp = "ou=drucker,ou=gruppen,dc=domäne,dc=local" <-- anpassen btw, wofür steht eigentlich das "OU", hab das jetzt schon in mehreren scripts gelesen, kann mir aber nicht vorstellen, was das heißen soll :( so far mfg GimbaR Zitieren Link zu diesem Kommentar
domi974 10 Geschrieben 25. Juli 2005 Melden Teilen Geschrieben 25. Juli 2005 hallo, also das script ist folgendermaßen aufgebaut: alle drucker in der domäne kriegen eine eigene gruppe in der ad, in der wiederrum die rechner enthalten sind, die den jeweiligen drucker als standard zugewiesen bekommen. somit ist das script dynamisch und muss nicht geändert / angepasst werden, wenn neue drucker hinzukommen. einzig die gruppe für den drucker mit den rechnern (falls dieser drucker als standard gesetzt werden soll) muss erstellt werden. @wrh$: daher kann das script nicht für ip-printing eingesetzt werden. die drucker werden über die gruppen abgefragt und "zusammengebaut". @gimbar: ou steht für organizational unit im englischen bzw. organisations-einheit. das script ist für eine ad ausgebaut. um das script einsetzten zu können, musst du in der ad (ich geh jetzt mal davon aus, das du eine ad hast) eine ou und die jeweiligen gruppen mit den druckernamen erstellen und die rechner die den jeweiligen drucker als standard kriegen sollen in diese gruppe einbinden. im code: strOUGrp = "ou=drucker,ou=gruppen,dc=domäne,dc=local" <-- anpassen muss du dann die erstellte ou deiner ad eintragen (die gruppe ist nicht notwendig). ich hab in meiner ad-struktur 2 ous um zu der "drucker-ou" zu gelangen, deshalb "ou=drucker,ou=gruppen". Zitieren Link zu diesem Kommentar
nobby_ 10 Geschrieben 20. Mai 2009 Melden Teilen Geschrieben 20. Mai 2009 hi ich bin grad erstes lehrjahr zum fachinformatiker und hab keine ahnung wie vbscript geht :confused: und mein chef will jetzt das ich auch so ein vbscript schreiben soll das drucker verbindet wenn der benutzer in einer bestimmten gruppe ist z.B. ich habe in der active directory gruppen erstellt die genausso heißen wie die drucker also TPRTIT, TPRTKO, TPRTVK und habe die benutzer zu mitgliedern der einzelnen gruppen gemacht so Dominik mitgield von TPRTIT, Lukas Mitglied von TPRTIT und TPRTKO und Norbert ist mitglied von allen drei. jetzt muss ich da ein vb script schreiben das beim anmelden die richtigen drucker verbindet ich weiß überhautnicht wie des gehen soll were für jede antwort dankbar 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.