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
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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 23049
Url: https://administrator.de/forum/skript-fuer-drucker-per-ad-zuordnen-23049.html
Ausgedruckt am: 07.04.2025 um 23:04 Uhr
8 Kommentare
Neuester Kommentar
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.
Gruß
gemini
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
hi
oder hier
http://www.gruppenrichtlinien.de/index.html?/HowTo/Anmelde_Scripts.htm
stehen schöne Beispiele
cu
willi
oder hier
http://www.gruppenrichtlinien.de/index.html?/HowTo/Anmelde_Scripts.htm
stehen schöne Beispiele
cu
willi
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
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...?
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...?
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
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