Script de monitoramento da impressora (PowerShell)

3

Vou escrever um script de algum tipo para verificar o visualizador de eventos em um servidor windows 2003 para todos os trabalhos impressos e, em seguida, gravá-los em um arquivo de texto delimitado por vírgulas como printername_floor_room.txt

Eu estou querendo saber qual é a melhor maneira de fazer isso em tempo real e continuar verificando o visualizador de eventos constantemente. Alguma advertência que eu preciso estar ciente?

Obrigado

EDIT: Ok, então provavelmente irei para o PowerShell, use Get-EventLog e edite os dados da "tabela". Problemas que estou tendo: se eu fosse salvar todos esses dados em um arquivo de texto, como faço para obter os dados dele? Um arquivo separado por vírgulas com o qual eu poderia trabalhar, mas isso, não tenho certeza. E uma vez que isso é resolvido, ainda não sei como manter o arquivo atualizado mais ou menos em tempo real. Posso fazer isso como um serviço, sem ocupar todos os recursos? Executar a cada x segundos, por exemplo?

EDIT 2: Então, tentei adicionar o Filtro de Eventos e o Consumidor usando as Ferramentas WMI (por meio da GUI, no meu PC local), tentando fazer com que ele registrasse corretamente meus trabalhos de impressão. Parece que meu evento foi pego, embora haja algo errado com o meu script que está vinculado ao evento. Deixei descansar no final de semana e ao chegar de volta ao escritório, notei uma tonelada de eventos no arquivo wbemess.log, como estes:

(Fri Apr 30 16:39:00 2010.112476500) : Polling query select * from Win32_PrintJob failed with error code 80041033. Will retry at next polling interval

ou

(Mon May 03 09:25:23 2010.1380562) : NT Event Log Consumer: could not retrieve sid, 0x80041002

Eu também estou percebendo picos no uso da CPU pelo wmiprvse.exe. Ao pesquisar um pouco, encontrei um cara resolvendo seus problemas, reinstalando o WMI no registro. Eu estou querendo saber se esta é a única maneira de solucionar isso. Eu realmente não quero que isso aconteça em nosso servidor de impressão de produção quando eu implementar isso ...

    
por HannesFostie 23.04.2010 / 12:52

2 respostas

1

Você provavelmente não quer tentar se recuperar de logs como um administrador do Unix para tentar se atualizar sobre os estados da impressora. Não seria bom se houvesse uma maneira de ser notificado de um evento da impressora? A boa notícia é que no Windows existe. Primeiro li este artigo: Notifique com o WMI . em seguida, dê uma olhada no Monitoramento de eventos WMI do Windows PowerShell 2.0 CTP2

Eu testei este script simples de 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"

Você deve obter uma linha de saída ao imprimir algo

    
por 29.04.2010 / 16:30
0

O Powershell tem alguns ganchos agradáveis para isso, mas no Server 2003 acredito que ele está limitado apenas à coleta local. Também é em modo batch, em vez de em tempo real, não sei se isso é importante para você. O Server 2008 tem ganchos melhores para monitoramento em tempo real.

    
por 24.04.2010 / 00:40