Serveur d'impression

Les imprimantes publiées par AD disparaissent – PERFGURU – Serveur d’impression

Le 11 novembre 2019 - 4 minutes de lecture

Les imprimantes publiées de AD disparaissent

Cela se produit normalement lorsque la stratégie de suppression d'impression est configurée.

le Imprimante L'élageur est un composant de Windows Service de spouleur qui supprime les objets PrintQueue orphelins de Active Directory. le Imprimante Pruner s'exécute dans le contexte du spouleur et uniquement sur les contrôleurs de domaine. Le but de la Imprimante L'élageur consiste à éliminer les objets PrintQueue de Active Directory dont l'attribut UNCName pointe vers un élément inexistant ou incorrect. imprimante.

Dépannage des imprimantes publiées manquantes:

==========================================

1. Lancez GPEdit.msc sur le serveur d'impression.
2. Naviguez jusqu'à Configuration ordinateur / Modèles d'administration / Imprimantes.
3. Configurez la stratégie Autoriser l'élagage des imprimantes publiées sur Désactivé.
4. Actualisez la stratégie de groupe.

Par défaut, le contrôleur de domaine vérifie 3 fois avec 8 heures d’intervalle pour déterminer si le
L’imprimante est toujours valide avant de la supprimer.

“Print Pruner est un thread qui s'exécute dans le contexte du spouleur sur tous les contrôleurs de domaine. Il
utilise les appels ADSI (ADsGetObject, IID_IDirectorySearch-> ExecuteSearch) pour obtenir le
liste de tous les serveurs printQueue
dans le AD.
Pour vérifier si le serveur est
dans même site, il utilise l'appel Winsock (gethostbyname)
et d'autres API de réseau (DsAddressToSiteNames, DsGetDcSiteCoverage).
Pour vérifier si la file d'attente disponibilité du serveur d'impression utilise des API de système d'exploitation
(NetServerGetInfo, OpenPrinter, GetPrinter).
Ainsi, tout le travail effectué par un élagueur est effectué à l'aide des fonctions ADSI, WinSock et OS. ”

Contournement pour récupérer les imprimantes disparues:
=========================================

Cliquez sur Démarrer, Exécuter, Services.msc
Arrêtez et redémarrez le service "Spouleur d'impression"

Remarque: lorsque le service de spouleur est redémarré sur un serveur d’impression, il republie automatiquement la imprimantes.

Remarque: Sur un service de cluster, arrêtez simplement le service Spouleur d'impression, car le service de cluster démarrera automatiquement le service lorsqu'il tentera de mettre la ressource Print en ligne.

Voici un script pour republier toutes les imprimantes dans Active Directory

Veuillez enregistrer ceci en tant que * .vbs et l'exécuter en tant que fichier de script.

'

' Cette VBS permet la publication d’imprimantes

'

' Créé par Austin Mack. Dernière modification le 8/19/2005

'

'Remarque: La commande générée pour chaque imprimante affichera une erreur pour chaque imprimante, si

' il est impossible d'activer la publication pour l'imprimante, par exemple, le manque d'autorisations.

'

Le lien suivant contient une liste d'attributs d'imprimante.

'http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wmisdk/wmi/win32_printer.asp

'Les attributs d'un périphérique d'impression Windows sont représentés par une combinaison d'indicateurs.

' Attribut partagé = 8 (ie disponible en tant que ressource réseau partagée)

'

'Informations de syntaxe PRINTUI.DLL supplémentaires disponibles en exécutant la commande suivante

' rundll32 printui.dll, PrintUIEntry /?

Option explicite

en cas d'erreur reprendre suivant

Clé dim 'La clé du dictionnaire pour chaque article

Dim objLocator, objService, objEnumerator

Dim objWSH, strComputerName

Dim WSHShell

Définir WSHShell = WScript.CreateObject ("WScript.Shell")

Définir objWSH = CreateObject ("WScript.Network")

strComputerName = objWSH.ComputerName

set objLocator = CreateObject ("WbemScripting.SWbemLocator")

set objService = objLocator.ConnectServer (strComputerName, "root / cimv2")

set objEnumerator = objService.ExecQuery ("SELECT * FROM win32_Printer")

Wscript.echo "Un message sera affiché après la publication des imprimantes sur TOUTES les imprimantes locales partagées. Toutefois, la mise à jour de l'interface graphique peut prendre un peu plus longtemps "& vbcrlf &" Cliquez sur OK pour continuer "

Pour chaque clé de objEnumerator 'faire défiler chaque imprimante du système

si ((key.attributes et 8) = 8) alors 'N'exécuter que l'imprimante est partagée

if (left (key.name, 2) <> "\") alors 'Exécuter uniquement si l’imprimante n’est pas une imprimante réseau UNC (c-à-d. Devrait être locale)

'wscript.echo key.name 'Affichez chaque imprimante sur le point d'activer la publication sur papier DS.

WSHShell.Run ("rundll32 printui.dll, PrintUIEntry / Xs / n" "" & key.name & "" "attributs + publiés")

fin si

fin si

Prochain

Wscript.echo "La publication d'imprimante a été activée pour les imprimantes locales partagées sur ce système"

Commentaires

Laisser un commentaire

Votre commentaire sera révisé par les administrateurs si besoin.