florian.rhomberg
Goto Top

Skript für Drucker per AD zuordnen

Wir haben zahlreiche Drucker die über die gesmate Schule verteilt sind. Alle Benutzer werden zentral verwaltet und alle Drucker sind am Server eingerichtet, notwendig wegen eines Druckerabrechnungsprogramm.

Hi,
Ich habe inzwischen im anmeldskript einmal eingetragen, dass alle Druckerverbindungen die mit dem Profil gespeichert werden gelöscht werden. Die Computer habe ich im AD in OU zusammengefasst und zwar raumweise. Im Moment hat jede Raum ein eigenes Skript mit dem der richtige Drucker dem Benutzer zugeordnet wird. Nun wollte ich fragen ob es möglich ist mithilfe von if-Schleifen oder switch, wie auch immer, beim Anmeldskript zunächts das AD abzufragen um zu wissen in welchen Raum der Benutzer gearde sitzt. Gint es da eine Möglichkeit?

Liebe Grüße,
Florian

Content-Key: 23049

Url: https://administrator.de/contentid/23049

Printed on: April 25, 2024 at 19:04 o'clock

Member: gemini
gemini Jan 08, 2006 at 00:10:45 (UTC)
Goto Top
Hallo eolith421,

wie man die OU des Computers direkt auswerten kann, bin ich jetzt überfragt.
Eine Möglichkeit wäre, den DN des Computers zu zerlegen, das ist aber keine elegante Lösung.

Für solche Sachen gibt es eigentlich ein Attribut des Computerobjekts, den Standort.

strContainer	= "OU=<<a>OuDerPCs<a>>"  
strPrintSRV = "Druckserver"  
Set WshNetwork = Wscript.CreateObject("Wscript.Network")  
strComputer = LCase(WshNetwork.ComputerName)
Set objRootDSE = GetObject("LDAP://rootDSE")  
Set objItem = GetObject("LDAP://cn=" & strComputer & "," & strContainer & "," & _  
   objRootDSE.Get("defaultNamingContext"))  
strLocation = objItem.Get("location")  
Select Case strLocation
   Case "Raum1"  
      WshNetwork.AddWindowsPrinterConnection "\\" & strPrintSRV & "\Drucker1"  
      WshNetwork.SetDefaultPrinter "\\" & strPrintSRV & "\Drucker1"	  
   Case "Raum2"  
      WshNetwork.AddWindowsPrinterConnection "\\" & strPrintSRV & "\Drucker2"  
      WshNetwork.SetDefaultPrinter "\\" & strPrintSRV & "\Drucker2"	  
   Case Else
End Select

Gruß
gemini
Member: wiri
wiri Jan 08, 2006 at 09:22:09 (UTC)
Goto Top
Member: florian.rhomberg
florian.rhomberg Jan 08, 2006 at 10:54:12 (UTC)
Goto Top
Danke für die Antwort! Es wäre nett wenn du mir noch die ersten Zeilen bis zu StrLocation erkären könntest wäre ich echt dankbar. Den Rest glaube ich mal zu verstehen. Nebenbei ne dumme Frage, das ist ein VB Script oder?, kann ich also nicht als bat speichern?

Liebe Grüße,
Florian
Member: gemini
gemini Jan 08, 2006 at 11:41:51 (UTC)
Goto Top
Frage, das ist ein VB Script oder?, kann ich also nicht als bat speichern?
Ja, ist ein VBScript und braucht die Endung .vbs

' Die Variablen werden mit Inhalt gefüllt.  
' OuDerPCs muss dann mit dem Namen der OU ersetzt werden in de die PCs sind,  
' also bspw. strContainer = "OU=AllePCs"  
strContainer	= "OU=<<a>OuDerPCs<a>>"  
' Der Server auf dem die Drucker installiert sind  
strPrintSRV = "Druckserver"  
' Eine Instanz des Network Objekts wird estellt.  
Set WshNetwork = Wscript.CreateObject("Wscript.Network")  
' Die Eigenschaft Computername des Network-Obj. wird abgefragt  
strComputer = LCase(WshNetwork.ComputerName)
' Eine Verbindung zum AD wird hergestellt  
' rootDSE ist das oberste Objekt in der AD-Hierarchie  
' ggf. kann auch noch ein Server angegeben werden, ("LDAP://server/rootDSE")  
Set objRootDSE = GetObject("LDAP://rootDSE")  
' Vebindung zum Objekt strComputer in der OU strContainer im Bereich Users und Computer  
Set objItem = GetObject("LDAP://cn=" & strComputer & "," & strContainer & "," & _  
   objRootDSE.Get("defaultNamingContext"))  
' Für o.g. PC in benannter OU wird das Atrribut location und in die Variable geschrieben  
strLocation = objItem.Get("location")  
' Die Variable wird ausgewertet  
' Wenn bei dem Computer kein Standort eingetragen ist, kommt ein Fehler  
Select Case strLocation
Case "Raum1"  
WshNetwork.AddWindowsPrinterConnection "\\" & strPrintSRV & "\Drucker1"  
WshNetwork.SetDefaultPrinter "\\" & strPrintSRV & "\Drucker1"	  
Case "Raum2"  
WshNetwork.AddWindowsPrinterConnection "\\" & strPrintSRV & "\Drucker2"  
WshNetwork.SetDefaultPrinter "\\" & strPrintSRV & "\Drucker2"	  
Case Else
End Select

gemini
Member: Lownex
Lownex Mar 23, 2006 at 06:06:31 (UTC)
Goto Top
Hallo zusammen!

Ich möchte ein ähnliches Szenario realisieren. Ich habe dazu ein VBS Script geschrieben, dass einen freigegebenen Drucker anzieht. Wenn ich Ihn über eine GPO einer Benutzergruppe zuordne, funktioniert dies auch wunderbar. Jetzt habe ich versucht über eine GPO auf einem Computerkonto das script ausführen zu lassen - das funktioniert jedoch nicht.

Wofür gibt es in der Computerconfiguration in einer GPO denn eigentlich die Möglichkeit ein Startup Script auszuführen, wenn dies nicht ausgeführt wird? Es muss doch eine Möglichkeit geben, abhängig vom Computer einen Drucker zuzuweisen ohne ein 20-zeilen Script zu schreiben, oder? Wie wird das in großen Netzen gemacht, in denen man sich manchmal in Köln und manchmal in Düsseldorf anmeldet und natürlich immer einen lokalen Drucker benötigt...?
Member: Xaero1982
Xaero1982 Mar 31, 2006 at 05:33:06 (UTC)
Goto Top
Wo liegt denn dein Login script das du in der GPO hinterlegt hast?

Doch nicht etwa auf
c:\scripts\logon.bat oder sowas?

das muss in den Ordner LETLOGON ... Im Windowsverzeichnis!
Member: Lownex
Lownex Mar 31, 2006 at 13:03:13 (UTC)
Goto Top
das liegt in dem Script-Verzeichnis der jeweiligen GPO. und wie gesagt, wenn ich das Script der Benutzerkonfiguration zuordne, dann funktioniert das...
Member: MisterIX
MisterIX Feb 05, 2009, updated at Oct 18, 2012 at 16:37:43 (UTC)
Goto Top
Hallo Florian, ich bin kürzlich auf das selbe Problem gestoßen zumal eine Zuordnung der Drucker im Active Directory erst ab Server 2003 R2 möglich ist.
Daher habe ich ein Kixtart Skript geschrieben, dass die Active Directory Gruppen auslesen kann. Da ich bei meiner Recherche auf Deiner Seite gelandet bin, hinterlege ich hier einen Link auf meinen Artikel, damit andere davon profitieren können. Kixtart ist übrigens Freeware und kann umsonst im Netz heruntergeladen werden.

Hier der Link auf den Artikel: Skript zur automatischen Verteilung von Druckern anhand von Computerkonten in Active Directory Gruppen