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!

Empfohlene Beiträge

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 zu diesem Kommentar

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 zu diesem Kommentar

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 zu diesem Kommentar
  • 5 Wochen später...

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 zu diesem Kommentar
  • 1 Monat später...

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 zu diesem Kommentar

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 zu diesem Kommentar
  • 3 Jahre später...

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 zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...