RELATÓRIO DE IMPRESSÃO (WINDOWS SERVER 2008 R2)

Avatar do usuário
gestor
Site Admin
Mensagens: 125
Registrado em: Sáb Mai 11, 2024 11:52 am

RELATÓRIO DE IMPRESSÃO (WINDOWS SERVER 2008 R2)

Mensagem: # 6Mensagem gestor »

#1 Por Alcarohtar 16/06/2011 - 09:37
Bom Dia,

Tenho em meu ambiente servidores com SO 2003 e 2008 R2. Minha empresa solicitou uma forma de podermos monitorar as impressões dos usuários, devido ao alto uso de papel.

Na matriz, o servidor de impressão é um 2003 EN, e nele consegui gerar um relatório usando o script abaixo. Ele captura os dados diretamente do log do Windows (dados com ID = 10).

Estes dados são gravados depois em um banco SQL também na matriz. Existe uma bat programada para rodar este script toda madrugada, pois ele só pega as impressões do dia anterior.

O problema é que não consigo fazer rodar em um 2008 PT, que está em uma unidade em SP. Ele termina de rodar o script muito rapidamente. Não sei se ele não captura os logs, se ele não grava no banco(ou não enxerga) ou o que acontece, não me retorna nenhum erro.

Qualquer ajuda é bem vinda. Abaixo o script.

O comando para rodá-lo é: cscript nomeelocaldoscript /srv:nomedoservidordeimpressao

'==========================================================
'
' LANG : VBScript
' NAME : event10.vbs
' AUTHOR : Fábio de Paula Junior(fabiopjr@gmail.com)
' DATE : 11/01/2005
' Description : Recupera e grava eventos de logs id=10
'
' COMMENT :
' LINKS:
'
' KEYWORDS : Logs Print Impressao
'==========================================================
'Argumentos
If WScript.Arguments.Named.Exists("?") then sobre
If WScript.Arguments.Named.Exists("srv")=0 then sobre
If WScript.Arguments.Named.Exists("dt")=0 then
DateToCheck = date - 1
else
DateToCheck = cdate(WScript.Arguments.Named("dt"))
if not isdate(DateToCheck) then sobre
end if

If WScript.Arguments.Named.Exists("dtf") then
DateToCheckFinal=cdate(WScript.Arguments.Named("dtf"))
else
DateToCheckFinal=DateToCheck
end if

debug = WScript.Arguments.Named.Exists("debug")


Dim prnMsg,prnServidor,prnImpressora,prnUser,prnQtd,debug
strComputer=WScript.Arguments.Named("srv")

'Variaveis de Configuração +++++++++++
varLocal=0 '0-EUA 1-Brasil ainda não está implementado o Brasil
varownedby=array(" owned by "," teste")
varLen_ownedby=len(varownedby(varLocal))
varwasPrinted=array(" was printed on "," teste")
varLen_wasPrinted=len(varwasPrinted(varLocal))
'+++++++++++++++++++++++++++++++++++++++
strServer="crmqas"
strBanco="print"


if NOT DEBUG then
Set objConnSQL = CreateObject("ADODB.Connection")
Set objRS = CreateObject("ADODB.Recordset")
objConnSQL.Open _
"Provider=SQLOLEDB;Server=crmqas;Database=print;User Id=printreport;Pwd=Cargoreport;Packet Size=4096;Trusted_Connection=no"

' objRS.Open "SELECT * FROM controle_impressao", _
' objConnSQL, adOpenKeyset, adLockOptimistic
end if

Set dtmStartDate = CreateObject("WbemScripting.SWbemDateTime")
Set dtmEndDate = CreateObject("WbemScripting.SWbemDateTime")

dtmEndDate.SetVarDate DateAdd("s",86399,DateToCheckFinal), True
dtmStartDate.SetVarDate DateToCheck, True

Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

Set colEvents = objWMIService.ExecQuery _
("Select * from Win32_NTLogEvent Where (TimeWritten >= '" _
& dtmStartDate & "' and TimeWritten < '" & dtmEndDate & "') AND (EventCode=10) AND (SourceName='Print')")

on error resume next
For each objEvent in colEvents
'--------------------------
' Interpreta Msg
'--------------------------
prnServidor= objEvent.ComputerName
prnMsg=objEvent.Message

s0=instr(1,prnMsg,",")+2
s1=instr(1,prnMsg,varownedby(varLocal))
prnDoc=mid(prnMsg,s0,s1-s0)

s0= instr(1,prnMsg,varownedby(varLocal)) + varLen_ownedby
s1=instr(s0,prnMsg," ") 'instr(1,prnMsg(1)," was printed on ")
prnUser=mid(prnMsg,s0,s1-s0)

s0=s1+varLen_wasPrinted
s1=instr(s0,prnMsg," via port ")

prnImpressora=mid(prnMsg,s0,s1-s0)

s0=instrrev(prnMsg,":")
prnQtd=cint(mid(prnMsg,s0+1))

prnDt=cdate(mid(objEvent.TimeWritten,7,2) & "/" & mid(objEvent.TimeWritten,5,2) & "/" & mid(objEvent.TimeWritten,1,4))

if debug then
wscript.echo prnservidor & ";" & prnImpressora & ";" & prnUser & ";" & prnQtd & ";" & prnDoc & ";" & prnDt
else
'--------------------------
' Grava no banco de dados
'--------------------------
'objRS.AddNew
'objRS("nome_asset") = prnServidor
'objRS("impressora") = prnImpressora
'objRS("usuario") = prnUser
'objRS("documento") = prnDoc
'objRs("data") = prnDt
'objRS("quantidade") = prnQtd
'objRS.Update

objConnSQL.Execute( " insert into controle_impressao ( nome_asset, impressora, usuario, data, quantidade, documento ) values ( '" & prnServidor & "', '" & prnImpressora & "', '" & prnUser & "', '" & prnDt & "', " & prnQtd & ", '" & prnDoc & "' )" )

end if

Next



objRS.Close
objConnSQL.Close
wscript.echo debug

Sub sobre()
wscript.echo "FABIO DE PAULA JUNIOR - 2005"
wscript.echo
wscript.echo wscript.scriptname & " /srv: [/dt: [/dtf:]] [/debug]"
wscript.quit
end sub