Drucker im AD
Ein Windows Druckserver kann seine freigegebenen Drucker im AD veröffentlichen und damit für Clients leichter auffindbar machen. Wenn aber solche veröffentlichten Drucker verschwinden, dann ost es meist der AD Drucker "Pruning"-Prozess schuld. Hier die Zusammenhänge.
Druckerfreigabe im Verzeichnis
Es gibt, wie so oft, viele Wege einen Drucker unter Windows bereitzustellen. Ein lokaler Anschluss per USB, Seriell, Parallel ist schon eher die Ausnahme und eigentlich alle Drucker sind irgendwie im Netzwerk. Ein Client im gleichen Subnetz oder mit mDNS/Multicast-Support kann die Drucker sogar alleine finden und sich direkt mit den Drucker oder Multifunktionsgerät verbinden. In Firmennetzwerken ist dies aber weniger gewünscht, dass Anwender sich einen Drucker "suchen" und vielleicht sogar falsch drucken.
In Firmen werden Drucker weiterhin über Druckserver eingerichtet und freigegeben und bei der Freigabe kann auch ein "Listing in Active Directory" aktiviert werden.

Als Folge davon wird der "Spooler"-Dienst auf dem Server versuchen, die Warteschlange im Active Directory zu veröffentlichen. Das funktioniert natürlich nur, wenn der Druckserver einen DC erreichen kann und Mitglied einer Active Directory Domain ist. Entra ID Joined allein reicht nicht. Die Druckerwarteschlange wird dann unter dem Computerkonto des Druckservers angelegt.

Für die Anlage des Objekts ist der Spooler-Service auf dem Server zuständig, welcher den Drucker im Netzwerk frei gibt. Die Eintragung erfolgt wenige Minuten nach dem Start des Spooler-Diensts
Das Objekt hat folgende Eigenschaften (Sytemfelder entfernt):
dn: CN=SV01-MSXFAQPrinter1,CN=SV01,OU=Server,DC=UCLABOR,DC=DE objectClass: top objectClass: leaf objectClass: connectionPoint objectClass: printQueue cn: SV01-MSXFAQPrinter1 name: SV01-MSXFAQPrinter1 flags: 0 uNCName: \\SV01.UCLABOR.DE\MSXFAQPrinter1 versionNumber: 5 serverName: SV01.UCLABOR.DE portName: LPT1: driverName: Microsoft PCL6 Class Driver priority: 1 printStartTime: 60 printEndTime: 60 printMaxResolutionSupported: 600 printOrientationsSupported: LANDSCAPE printOrientationsSupported: PORTRAIT printCollate: FALSE printColor: FALSE printShareName: MSXFAQPrinter1 printSpooling: PrintAfterSpooled printKeepPrintedJobs: FALSE driverVersion: 1025 printMaxXExtent: 2159 printMaxYExtent: 2970 printMinXExtent: 2100 printMinYExtent: 2794 printStaplingSupported: FALSE printMediaReady: A4 printNumberUp: 6 printMediaSupported:: 5pWM55G054ml printMediaSupported:: QTQ= printMediaSupported:: TGV0dGVy printerName: MSXFAQPrinter1 url: http://SV01.UCLABOR.DE/MSXFAQPrinter1 objectCategory: CN=Print-Queue,CN=Schema,CN=Configuration,DC=UCLABOR,DC=DE shortServerName: SV01 printDuplexSupported: FALSE
Der Spooler veröffentlicht also nicht nur den UNC-Pfad in der Form "\\servername\freigabe" sondern auch noch die ein oder andere Druckerinformation über Treiber, Druckauflösung, Duplexfähigkeit etc.
Beim Beenden des Spooler-Dienst wird der Eintrag NICHT gelöscht, sondern bleibt erst einmal bestehen. Da kommen wir gleich noch drauf zu sprechen.
Drucker im AD anlegen
Es gibt aber auch noch einen manuelle Weg. Über die MMC können sie auch andere Drucker Servern veröffentlichen, die per UNC-Pfad für Windows Clients erreichbar sein. Das könnte also auch ein LINUX-Druckserver sein.

Im nächsten Schritt wird dann der UNC-Pfad erwartet und von der MMC überprüft:

Der Server muss also erreichbar sein, ansonsten können Sie das Objekt nicht anlegen. Das Objekt muss aber nicht unter dem Computerkonto selbst vorhanden sind.
Drucker suchen und verbinden
Ein Client kann bei einer Suche im Verzeichnis diese Objekte finden. Auch der Client muss dazu natürlich Mitglied im Active Directory sein. Je nach Version des Clients sieht die Dialogbox etwas anders aus.

Aber auch bei der Konfiguration über Gruppenrichtlinien kann ein Administrator über die "Preferences" die Drucker den Clients zuweisen und hier wird auch eine Suche im Verzeichnis angeboten.

Allerdings wird der Drucker in der Richtlinie dann doch wieder über "\\Servername\freigaben" hinterlegt und nicht als LDAP-Objekt.
Insofern kann man sich überlegen, wie wichtig diese Funktion letztlich ist, zumal es mittlerweile ganz neue Wege gibt, eine Papierausgabe zu steuern, z.B. per Universal Print (Cloud) oder verschiedene OnPremises Systeme, die ein Abrufen des Jobs am Drucker erlauben.
Löschen
Am Anfang hatte ich geschrieben, dass der Spooler-Dienst auf dem Druckserver den Eintrag im AD anlegt aber nicht löscht. Das ist so nicht ganz richtig. Wenn ich die Konfiguration des Druckers auf dem Druckserver ändere und z.B. die Veröffentlichung rausnehmen, dann zeigt er mir zwar an, dass die Änderung einige Minuten dauern kann, aber dann ist das "Druckerobjekt" im Active Directory auch gelöscht worden

Das ist aber nicht der Fall, wenn ich den Druckerdienst einfach beende, d.h. weil ich den Server durchstarte. Damit bleibt das Objekt aber auch bestehen, wenn ich einen Server mit so freigegebenen Druckern herunterfahre und abbaue. Als professioneller Administrator sollte ich natürlich auch das zum Server dazugehörige Computerkonto entfernen und damit verschwinden dann auch alle Drucker-Objekten, die von dem Server im Active Directory angelegt wurden. Sollten Sie von Hand so ein Objekt löschen, dann wird der Spooler auch wieder versuchen dieses anzulegen und protokolliert dies im Eventlog:
Log Name: Microsoft-Windows-PrintService/Admin Source: Microsoft-Windows-PrintService Event ID: 337 Task Category: Publishing a printer in the Active Directory Level: Error Keywords: Active Directory,Classic Spooler Event User: SYSTEM Description: The print queue could not be found on domain UCLABOR.DE. It may have been deleted from the Active Directory directory service. Windows will attempt to republish the print queue. Error: 2116
Wenn der Eintrag schon vorhanden ist, wird er übrigens nicht aktualisiert oder überschrieben.
Pruner auf den DC
Wenn ein Server aber seine Einträge nicht mehr löschen kann und ein Administrator dies nicht tut, dann gibt es eine Funktion im Domain Controller, welche hier aufräumt. Aufgefallen ist das bei einem Kunden, bei dem die per AD veröffentlichen Drucker nach 24h immer wieder alleine verschwunden sind und im Papierkorb des AD gelandet sind.
Auf dem Domain Controller gibt es eine Funktion im Spooler, die in der Standardkonfiguration alle 8h die im Active Directory freigegebenen Drucker auf ihre Erreichbarkeit prüft und nach drei Fehlern die nicht erreichbare Drucker aus dem Active Directory löscht. Wenn der Druckserver aktiv ist, kann das Objekt ja wieder eintragen. Das macht er aber in der Standardeinstellung auch nur beim Start des "Spooler"-Diensts.
Wer auf den LDAP-Objekten im Active Directory eine Logik aufgebaut hat, sollte prüfen, ob diese Default-Einstellungen passen. Sie können per Gruppenrichtlinien angepasst werden.
Das funktioniert natürlich nur, wenn der Spooler-Dienst auf dem DC auch gestartet ist. Das sollte aber nur in sehr kleinen Umgebungen der Fall sein, wenn jemand auf dem DC auch Drucker freigibt. Aus Sicherheitsgründen sollten Sie auf einem DC keinen Spooler betreiben.
Die verschiedenen Lücken der Vergangenheit sollten Grund genug sein, um zukünftige Lücken von vorneherein auszuschließen.
- CVE-2021-34527 Windows Print Spooler
Remote Code Execution Vulnerability
https://msrc.microsoft.com/update-guide/vulnerability/CVE-2021-34527 - CVE-2021-1675 Windows Print Spooler
Remote Code Execution Vulnerability
https://msrc.microsoft.com/update-guide/vulnerability/CVE-2021-1675 - What You Need to Know about
PrintNightmare, the Critical Windows Print
Spooler Vulnerability
https://www.semperis.com/blog/what-you-need-to-know-about-printnightmare-the-critical-windows-print-spooler-vulnerability/ - How to Disable Print Spooler on Domain
Controller
https://www.alitajran.com/disable-print-spooler-domain-controller/ - How printer pruner works?
https://itworldjd.wordpress.com/2014/11/12/how-printer-pruner-works/
GPO Einstellungen für "Pruning"
Das Verhalten des Spooler-Diensts können Sie über Gruppenrichtlinien zentral steuern. Hier die verfügbaren Einträge (Windows 2022 DC)

Wir können hier sowohl die Veröffentlichungsfunktion des Spooler, die Suche der Clients und vor allem auch das Pruning steuern. Die Hilfe in den GPs schreibt dazu:
The pruning service periodically contacts computers that have published printers
to verify that the printers are still available for use. If a computer does not
respond to the contact attempt, the attempt is retried a specified number of
times, at a specified interval. The "Directory pruning retry" setting determines
the number of times the attempt is retried; the default value is two retries.
The "Directory Pruning Interval" setting determines the time interval between
retries; the default value is every eight hours. If the computer has not
responded by the last contact attempt, its printers are pruned from the
directory.
Quelle: GPMC Windows 2022
Wenn wir nichts vorgeben (Default), dann sind folgende Einstellungen wirksam
| Einstellung | Default | Bedeutung |
|---|---|---|
Allow printers to be published |
Aktiv |
Client können nach Druckern im AD suchen |
Allow pruning of published printers |
Aktiv |
DC entfernt Drucker, die nicht erreichbar sind |
Automatically publish new printers in AD |
Aktiv |
Neu eingerichtete Drucker werden direkt veröffentlicht |
Check published state |
Nur beim Start |
Check nur beim Start des Spooler. Intervall zwischen 30Min-24h möglich |
Directory pruning interval |
8h |
Alle 8 Stunden prüft der DC die Erreichbarkeit der Drucker |
Directory pruning priority |
Normal |
Der Prozess läuft nicht mit hoher Priorität |
Directory pruning retry |
2 |
Eine Prüfung eines nicht erreichbaren Druckers wird 2x in 8h wiederholt, ehe gelöscht wird |
Log directory pruning retry events |
Inaktiv |
Normale Druckervorgänge werden nicht protokolliert. Fehler und "Pruning" wird aber immer geloggt. |
Prune printers that are not automatically republished |
Inakjtiv |
Manuell als AD-Objekt angelegte Objekte werden nicht entfernt |
Als Administrator haben Sie also durchaus eine Kontrolle über das Verhalten der Client und Services, wenn Sie denn wissen, dass es diese Funktion und die dazu passenden Einstellungen gibt.
Einschätzung
"So wichtig kann es nicht sein, sonst hätte ich das früher schon mal gewusst". Das war zumindest meine erste Aussage. Natürlich habe ich Drucker schon seit Windows 2000 im AD mal zum Test und Demonstration veröffentlicht aber wirklich genutzt habe ich es bei meinen Kunden nicht. Die Drucker wurden besser über Gruppenrichtlinien und Skripte oder Software-Verteilung an die Clients verteilt. Warum sollte ein Anwender mit Ausnahme im Homeoffice, sich überhaupt um die Zuweisung von Druckern kümmern müssen? Das geht sehr einfach über "\\Servername\Druckername" und einer entsprechenden Konfiguration der vorhandenen Hilfsmittel.
Vielleicht lag es daran, dass es mich eigentlich nie gestört hat, ob die Drucker nun im Active Directory veröffentlich waren oder nicht. Aber auch ich lerne nie aus und vielleicht hilft die Seite dem ein oder anderen Leser beim Verständnis.
Weitere Links
- GPO und Drucker
- Print Management Step-by-Step Guide
https://learn.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2008-R2-and-2008/cc753109(v=ws.10) - AD DS Printer Publishing
https://learn.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2008-R2-and-2008/cc773824(v=ws.10) - Use Group Policy settings to control printers in Active
Directory
https://learn.microsoft.com/en-us/troubleshoot/windows-server/printing/use-group-policy-to-control-ad-printer - Steuern von Druckern mithilfe von
Gruppenrichtlinieneinstellungen in Active Directory
https://learn.microsoft.com/de-de/troubleshoot/windows-server/printing/use-group-policy-to-control-ad-printer - PRN: Active Directory Printer Publishing
https://techcommunity.microsoft.com/blog/askperf/prn-active-directory-printer-publishing/373768 - How printer pruner works?
https://itworldjd.wordpress.com/2014/11/12/how-printer-pruner-works/ - Network Printers keep disappearing from Directory Services
http://www.adamfowlerit.com/2013/08/19/network-printers-keep-disappearing-from-directory-services/ - Printing and Active Director
http://blogs.technet.com/b/askperf/archive/2009/05/05/printing-and-active-directory.aspx - How to use Group Policy settings to control printers in
Active Directory
http://support2.microsoft.com/kb/234270/en-us - TODO: Disable the Print Spooler service on Domain
Controllers
https://dirteam.com/sander/2021/06/30/todo-disable-the-print-spooler-service-on-domain-controllers/ - AD DS Printer publishing event IDs:
http://technet.microsoft.com/en-us/library/cc773824%28v=ws.10%29.aspx















