MSXFAQ MeetNow aktiv: Komm doch einfach dazu.

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.

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