3 votes

Surveillance de l'imprimante script (PowerShell)

Je vais écrire une sorte de script pour vérifier la visionneuse d'événements dans un serveur Windows 2003 pour tous les travaux d'impression, et ensuite les écrire dans un fichier texte délimité par des virgules comme nom d'imprimante_étage_salle.txt.

Je me demande quelle est la meilleure façon de faire cela en temps réel, et de vérifier constamment le visualiseur d'événements. Y a-t-il des précautions à prendre ?

Merci

EDITAR: D'accord, je vais donc probablement utiliser PowerShell et utiliser Get-EventLog, puis modifier les données de la "table". Le problème que je rencontre est le suivant : si j'enregistre toutes ces données dans un fichier texte, comment puis-je en extraire les données ? Un fichier séparé par des virgules, je pourrais travailler avec, mais ça, je ne suis pas vraiment sûr. Et une fois que c'est réglé, je ne sais toujours pas comment faire pour que le fichier soit mis à jour plus ou moins en temps réel. Puis-je faire en sorte que cela ressemble à un service, sans accaparer toutes les ressources ? Le lancer toutes les x secondes par exemple ?

EDIT 2 : J'ai donc essayé d'ajouter le filtre d'événements et le consommateur en utilisant les outils WMI (via l'interface graphique) sur mon ordinateur local, en essayant de faire en sorte qu'il enregistre correctement mes tâches d'impression. Il semble que mon événement soit pris en compte, bien qu'il y ait un problème avec mon script qui est lié à l'événement. Je l'ai laissé reposer pendant le week-end et en arrivant au bureau, j'ai remarqué une tonne d'événements dans le fichier wbemess.log, comme ceux-ci :

(Fri 30 avril 16 : Requête d'interrogation select * from Win32_PrintJob a échoué avec le code d'erreur 80041033. Réessayera au prochain intervalle d'interrogation

o

(Mon May 03 09:25:23 2010.1380562) : NT Event Log Consumer : impossible de récupérer le sid, 0x80041002

Je remarque également des pics d'utilisation du processeur par wmiprvse.exe. En cherchant un peu sur Google, j'ai trouvé un type qui a résolu ses problèmes en réinstallant WMI dans le registre. Je me demande si c'est la seule façon de résoudre ce problème. Je ne veux vraiment pas que cela se produise sur notre serveur d'impression de production lorsque je mettrai en œuvre cette solution...

1voto

Rob Howard Points 636

Vous n'avez probablement pas envie d'essayer de fouiller dans les journaux comme un administrateur Unix pour essayer d'être au courant de l'état des imprimantes. Ce serait bien s'il y avait un moyen d'être notifié d'un événement d'imprimante à la place. La bonne nouvelle, c'est que sous Windows, c'est possible. J'ai d'abord lu cet article : Notifier avec WMI . alors jetez un coup d'œil à Surveillance des événements WMI avec Windows PowerShell 2.0 CTP2

J'ai testé ce simple script powershell :

$query = "Select * From __InstanceCreationEvent within .1 Where TargetInstance ISA 'Win32_printjob'"
$action = write-host "Printed Document status" (gwmi win32_printjob).status ", time" (gwmi win32_printjob).timesubmitted
register-wmievent -query $query -action $action -sourceidentifier "printerwatcher"

Vous devriez obtenir une ligne de sortie lorsque vous imprimez quelque chose.

0voto

sysadmin1138 Points 129885

Powershell a de jolis crochets pour ça, mais sur Server 2003, je croire il est limité à la collecte locale uniquement. Il s'agit également d'un mode batch et non en temps réel, mais je ne sais pas si c'est important pour vous. Le serveur 2008 dispose de meilleurs crochets pour la surveillance en temps réel.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X