Jump to content

Drucker mit VB-Script verbinden


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Recommended Posts

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

Link to comment

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.

Link to comment

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))

Link to comment

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

Link to comment
  • 5 weeks later...

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!

Link to comment
  • 1 month later...

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??

Link to comment

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

Link to comment

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".

Link to comment
  • 3 years later...

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

Link to comment
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...