¿Es posible ejecutar un archivo .bat cuando entra un trabajo de impresión en Microsoft Server 2008?

Personalmente, creo que deberías intentar usar PowerShell (archivos .ps1) en lugar de archivos por lotes porque son una alternativa mucho más limpia a las secuencias de comandos en Windows.

No soy un experto en esta área específicamente, pero puede intentar crear un trabajo de PowerShell que se ejecute en segundo plano para monitorear la cola de impresión. Lo malo de esto es que estás sondeando los trabajos de impresión que apestan. Si necesita responder a un trabajo de impresión de inmediato, esta es probablemente una mala opción. Sin embargo, si solo necesita hacer algo dentro de un minuto más o menos después de la impresión, puede hacer esta encuesta de trabajo cada minuto para un cambio en la finalización del trabajo. Aquí hay una pequeña muestra de lo que podría hacer que el trabajo busque:

En PowerShell, ejecute lo siguiente (tomado de http://boeprox.wordpress.com/201…

$ jobs = Get-WMIObject Win32_PerfFormattedData_Spooler_PrintQueue | Seleccione Nombre, @ {Expression = {$ _. Jobs}; Label = “CurrentJobs”}, TotalJobsPrinted, JobErrors

Esto asignará todos los CurrentJobs, TotalJobsPrinted y JobErrors a la variable $ jobs. Si solo escribe $ jobs, verá estas estadísticas enumeradas de la siguiente manera:


Si desea obtener TotalJobsPrinted de “Microsoft XPS Document Writer”, solo necesita escribir $ jobs [1] .TotalJobsPrinted

Ahora todo lo que necesita hacer es poner este código en un trabajo de PowerShell que verifica la cola de impresión cada cierto tiempo.