none
Duvida Script Impressão RRS feed

  • Pergunta

  • Estou utilizando um Script ja postado aqui no forum feito pela Luana e o mesmo esta acusando erro na linha (22,1) erro de compilação,salvei o arquivo .vbs e estou tentando roda-lo.Alguem poderia me ajudar?Não tenho tanto conhecimento em power shell agradeço desde já e obrigado!

    --------------------------------------------------------------

    On Error Resume Next

    Set WshNetwork = WScript.CreateObject("WScript.Network")
    Dim strComputer
    Dim objWMIService
    Dim propValue
    Dim objItem
    Dim SWBemlocator
    Dim UserName
    Dim Password
    Dim colItems
    Dim datahj
    Dim mes
    Dim horario
    Dim acertahora
    Dim acertamin
    Dim nomearquivo
    datahj = Date
    horario = Time

    If Month(datahj) < 10 Then
       mes = "0" & Month(datahj)
    Else
       mes = Month(datahj)
    End If

    If Hour(horario) < 10 Then
     acertahora = "0" & Hour(horario)
    Else
     acertahora = Hour(horario)
    End If

    If Minute(horario) < 10 Then
     acertamin = "0" & Minute(horario)
    Else
     acertamin = Minute(horario)
    End If

    nomearquivo = "Impressoes_"&WshNetwork.ComputerName &"_" &WshNetwork.UserDomain &"_" &Year(datahj) &mes &Day(datahj) &"_" &acertahora &"h" &acertamin &"m"
    '&WshNetwork.ComputerName & "_" & WshNetwork.UserDomain & "_"& Year(datahj) & mes & Day(datahj) &"_"& acertahora &"h" & acertamin &"m"
    Set Fso = CreateObject("Scripting.FileSystemObject")
    Set OFile = Fso.CreateTextFile("C:\"&nomearquivo&".txt", 2)

    OFile.WriteLine("Caption; DataType; Description; Document; DriverName; ElapsedTime; HostPrintQueue; InstallDate; " _
     & "JobId; JobStatus; Name; Notify; Owner; PagesPrinted; Parameters; PrintProcessor; Priority; Size; StartTime; " _
     & "Status; StatusMask; TimeSubmitted; TotalPages; UntilTime")

    strComputer = "."
    UserName = ""
    Password = ""

    Set SWBemlocator = CreateObject("WbemScripting.SWbemLocator")
    Set objWMIService = SWBemlocator.ConnectServer(strComputer,"root\CIMV2",UserName,Password)

    Set colPrintJobs = objWMIService. _
        ExecNotificationQuery("Select * From __InstanceCreationEvent " _
            & "Within 5 Where TargetInstance ISA 'Win32_PrintJob'")

    Do While True
     Set objPrintJob = colPrintJobs.NextEvent
     OFile.WriteLine(objPrintJob.TargetInstance.Caption &";" _
     &objPrintJob.TargetInstance.DataType &";" _
     &objPrintJob.TargetInstance.Description &";" _
     &objPrintJob.TargetInstance.Document &";" _
     &objPrintJob.TargetInstance.DriverName &";" _
     &objPrintJob.TargetInstance.ElapsedTime &";" _
     &objPrintJob.TargetInstance.HostPrintQueue &";" _
     &objPrintJob.TargetInstance.InstallDate &";" _
     &objPrintJob.TargetInstance.JobId &";" _
     &objPrintJob.TargetInstance.JobStatus &";" _
     &objPrintJob.TargetInstance.Name &";" _
     &objPrintJob.TargetInstance.Notify &";" _
     &objPrintJob.TargetInstance.Owner &";" _
     &objPrintJob.TargetInstance.PagesPrinted &";" _
     &objPrintJob.TargetInstance.Parameters &";" _
     &objPrintJob.TargetInstance.PrintProcessor &";" _
     &objPrintJob.TargetInstance.Priority &";" _
     &objPrintJob.TargetInstance.Size &";" _
     &objPrintJob.TargetInstance.StartTime &";" _
     &objPrintJob.TargetInstance.Status &";" _
     &objPrintJob.TargetInstance.StatusMask &";" _
     &objPrintJob.TargetInstance.TimeSubmitted &";" _
     &objPrintJob.TargetInstance.TotalPages &";" _
     &objPrintJob.TargetInstance.UntilTime)
     

    objWorkbook.SaveAs "C:\"&nomearquivo
    Loop


    terça-feira, 14 de março de 2017 13:56

Respostas

  • Romulo,

    Conseguiu fazer o teste? Precisa de mais alguma ajuda?


    On Error Resume Next
    
     Set WshNetwork = WScript.CreateObject("WScript.Network")
     Dim strComputer
     Dim objWMIService
     Dim propValue
     Dim objItem
     Dim SWBemlocator
     Dim UserName
     Dim Password
     Dim colItems
     Dim datahj
     Dim mes
     Dim horario
     Dim acertahora
     Dim acertamin
     Dim nomearquivo
     datahj = Date
     horario = Time
    
     If Month(datahj) < 10 Then
        mes = "0" & Month(datahj)
     Else
        mes = Month(datahj)
     End If
    
     If Hour(horario) < 10 Then
      acertahora = "0" & Hour(horario)
     Else
      acertahora = Hour(horario)
     End If
    
     If Minute(horario) < 10 Then
      acertamin = "0" & Minute(horario)
     Else
      acertamin = Minute(horario)
     End If
    
     nomearquivo = "Impressoes_"&WshNetwork.ComputerName &"_" &WshNetwork.UserDomain &"_" &Year(datahj) &mes &Day(datahj) &"_" &acertahora &"h" &acertamin &"m"
     '&WshNetwork.ComputerName & "_" & WshNetwork.UserDomain & "_"& Year(datahj) & mes & Day(datahj) &"_"& acertahora &"h" & acertamin &"m"
     Set Fso = CreateObject("Scripting.FileSystemObject")
     Set OFile = Fso.CreateTextFile("C:\"&nomearquivo&".txt", 2)
    
     OFile.WriteLine("Owner; Document; PrintProcessor; TimeSubmitted; TotalPages; StartTime; ")
    
     strComputer = "."
     UserName = ""
     Password = ""
    
     Set SWBemlocator = CreateObject("WbemScripting.SWbemLocator")
     Set objWMIService = SWBemlocator.ConnectServer(strComputer,"root\CIMV2",UserName,Password)
    
     Set colPrintJobs = objWMIService. _ 
         ExecNotificationQuery("Select * From __InstanceCreationEvent " _ 
             & "Within 5 Where TargetInstance ISA 'Win32_PrintJob'")
    
     Do While True
      Set objPrintJob = colPrintJobs.NextEvent
      OFile.WriteLine(objPrintJob.TargetInstance.Owner & ";" _
      & objPrintJob.TargetInstance.Document & ";" _
      & objPrintJob.TargetInstance.PrintProcessor & ";" _
      & objPrintJob.TargetInstance.TimeSubmitted & ";" _
      & objPrintJob.TargetInstance.TotalPages & ";" _
      & objPrintJob.TargetInstance.StartTime)
      
    
    objWorkbook.SaveAs "C:\"&nomearquivo
    Loop

    • Sugerido como Resposta Carlos_rodrigues quinta-feira, 16 de março de 2017 17:41
    • Não Sugerido como Resposta Carlos_rodrigues quinta-feira, 16 de março de 2017 17:41
    • Editado Carlos_rodrigues quinta-feira, 16 de março de 2017 17:41 correção
    • Marcado como Resposta Rômulo Augusto quarta-feira, 19 de abril de 2017 14:55
    quinta-feira, 16 de março de 2017 15:04

Todas as Respostas

  • Rômulo,

    Script esta funcionando, para facilitar adiciona no post a mensagem de erro.

    Uma sugestão verifica de você tem acesso para criar no disco C:\

    terça-feira, 14 de março de 2017 15:05
  • Para você ver a mensagem de erro, comenta a primeira linha
    'On Error Resume Next



    terça-feira, 14 de março de 2017 15:09
  • Boa tarde Carlos obrigado pela resposta entao o script está rodando mas nao esta criando o arquivo e nao sei como conferir se o mesmo esta em funcionamento.Mudei a criação do arquivo para area de trabalho para testar e nao criou nenhum arquivo de resposta, nao sei se o erro esta no funcionamento do script ou na criação do arquivo.Fico no aguardo e mais uma vez obrigado pela ajuda

    terça-feira, 14 de março de 2017 16:05
  • Oi Rômulo,

    Você alterou a linha inicial para 'On Error Resume Next

    Outro ponto importante, no seu script para alterar o caminho do arquivo você precisa alterar duas linhas diferente 

    exemplo:

    Set OFile = Fso.CreateTextFile("C:\"&nomearquivo&".txt", 2)
    
    'e a linha 
    
    objWorkbook.SaveAs "C:\"&nomearquivo


    terça-feira, 14 de março de 2017 16:51
  • A linha de código Set OFile = Fso.CreateTextFile("C:\"&nomearquivo&".txt", 2) , é responsável por criar o arquivo txt, e a linha objWorkbook.SaveAs "C:\"& nomearquivo, salvar as informações no txt
    terça-feira, 14 de março de 2017 16:55
  • Em teste o script retornou no txt a informação baixo, apenas coloquei ##### para tirar o nome da minha maquina

    Caption; DataType; Description; Document; DriverName; ElapsedTime; HostPrintQueue; InstallDate; JobId; JobStatus; Name; Notify; Owner; PagesPrinted; Parameters; PrintProcessor; Priority; Size; StartTime; Status; StatusMask; TimeSubmitted; TotalPages; UntilTime
    Microsoft Print to PDF, 7;RAW;Microsoft Print to PDF, 7;Microsoft Word - Document1;Microsoft Print To PDF;00000000000000.000000:000;\\######;;7;Spooling;Microsoft Print to PDF, 7;carlos.rodrigues;carlos.rodrigues;0;;MS_XPS_PROC;1;0;;OK;8;20170314141015.113000-180;0;

    terça-feira, 14 de março de 2017 17:12
  • Pessoal gostaria de agradecer mais uma vez a ajuda de vocês,consegui fazer o script rodar na rede pelo AD enviando para as maquinas necessarias através de uma GPO.O script esta gravando corretamente no arquivo Txt porem esta gerando muitas informações que nao são necessarias para nosso ambiente,gostaria de saber como faço para ele gerar apenas : [Nome do Usuario][Nome do Documento][Numero de Páginas][Horário da impressão].Já tentei arrumar as chamadas que sao Geradas no arquivo mas ai o Script parou de escrever no txt.Se alguem puder ajudar agradeço bastante,obrigado desde já!
    quarta-feira, 15 de março de 2017 13:23
  • Romulo,

    faz o teste, fazendo favor

    On Error Resume Next
    
     Set WshNetwork = WScript.CreateObject("WScript.Network")
     Dim strComputer
     Dim objWMIService
     Dim propValue
     Dim objItem
     Dim SWBemlocator
     Dim UserName
     Dim Password
     Dim colItems
     Dim datahj
     Dim mes
     Dim horario
     Dim acertahora
     Dim acertamin
     Dim nomearquivo
     datahj = Date
     horario = Time
    
     If Month(datahj) < 10 Then
        mes = "0" & Month(datahj)
     Else
        mes = Month(datahj)
     End If
    
     If Hour(horario) < 10 Then
      acertahora = "0" & Hour(horario)
     Else
      acertahora = Hour(horario)
     End If
    
     If Minute(horario) < 10 Then
      acertamin = "0" & Minute(horario)
     Else
      acertamin = Minute(horario)
     End If
    
     nomearquivo = "Impressoes_"&WshNetwork.ComputerName &"_" &WshNetwork.UserDomain &"_" &Year(datahj) &mes &Day(datahj) &"_" &acertahora &"h" &acertamin &"m"
     '&WshNetwork.ComputerName & "_" & WshNetwork.UserDomain & "_"& Year(datahj) & mes & Day(datahj) &"_"& acertahora &"h" & acertamin &"m"
     Set Fso = CreateObject("Scripting.FileSystemObject")
     Set OFile = Fso.CreateTextFile("C:\"&nomearquivo&".txt", 2)
    
     OFile.WriteLine("Caption; DataType; Description; Document; DriverName; ElapsedTime; HostPrintQueue; InstallDate; " _
      & "JobId; JobStatus; Name; Notify; Owner; PagesPrinted; Parameters; PrintProcessor; Priority; Size; StartTime; " _
      & "Status; StatusMask; TimeSubmitted; TotalPages; UntilTime")
    
     strComputer = "."
     UserName = ""
     Password = ""
    
     Set SWBemlocator = CreateObject("WbemScripting.SWbemLocator")
     Set objWMIService = SWBemlocator.ConnectServer(strComputer,"root\CIMV2",UserName,Password)
    
     Set colPrintJobs = objWMIService. _ 
         ExecNotificationQuery("Select * From __InstanceCreationEvent " _ 
             & "Within 5 Where TargetInstance ISA 'Win32_PrintJob'")
    
     Do While True
      Set objPrintJob = colPrintJobs.NextEvent
      OFile.WriteLine(objPrintJob.TargetInstance.Owner &";" _
      &objPrintJob.TargetInstance.Document &";" _
      &objPrintJob.TargetInstance.PrintProcessor &";" _
      &objPrintJob.TargetInstance.TimeSubmitted &";" _
      &objPrintJob.TargetInstance.TotalPages &";" _
      &objPrintJob.TargetInstance.StartTime)
      
    
    objWorkbook.SaveAs "C:\"&nomearquivo
    Loop

    quarta-feira, 15 de março de 2017 13:58
  • Fiz uma correção para tirar o cabeçalho
    On Error Resume Next
    
     Set WshNetwork = WScript.CreateObject("WScript.Network")
     Dim strComputer
     Dim objWMIService
     Dim propValue
     Dim objItem
     Dim SWBemlocator
     Dim UserName
     Dim Password
     Dim colItems
     Dim datahj
     Dim mes
     Dim horario
     Dim acertahora
     Dim acertamin
     Dim nomearquivo
     datahj = Date
     horario = Time
    
     If Month(datahj) < 10 Then
        mes = "0" & Month(datahj)
     Else
        mes = Month(datahj)
     End If
    
     If Hour(horario) < 10 Then
      acertahora = "0" & Hour(horario)
     Else
      acertahora = Hour(horario)
     End If
    
     If Minute(horario) < 10 Then
      acertamin = "0" & Minute(horario)
     Else
      acertamin = Minute(horario)
     End If
    
     nomearquivo = "Impressoes_"&WshNetwork.ComputerName &"_" &WshNetwork.UserDomain &"_" &Year(datahj) &mes &Day(datahj) &"_" &acertahora &"h" &acertamin &"m"
     '&WshNetwork.ComputerName & "_" & WshNetwork.UserDomain & "_"& Year(datahj) & mes & Day(datahj) &"_"& acertahora &"h" & acertamin &"m"
     Set Fso = CreateObject("Scripting.FileSystemObject")
     Set OFile = Fso.CreateTextFile("C:\"&nomearquivo&".txt", 2)
    
     OFile.WriteLine("Owner; Document; PrintProcessor; TimeSubmitted; TotalPages; StartTime; ")
    
     strComputer = "."
     UserName = ""
     Password = ""
    
     Set SWBemlocator = CreateObject("WbemScripting.SWbemLocator")
     Set objWMIService = SWBemlocator.ConnectServer(strComputer,"root\CIMV2",UserName,Password)
    
     Set colPrintJobs = objWMIService. _ 
         ExecNotificationQuery("Select * From __InstanceCreationEvent " _ 
             & "Within 5 Where TargetInstance ISA 'Win32_PrintJob'")
    
     Do While True
      Set objPrintJob = colPrintJobs.NextEvent
      OFile.WriteLine(objPrintJob.TargetInstance.Owner & ";" _
      & objPrintJob.TargetInstance.Document & ";" _
      & objPrintJob.TargetInstance.PrintProcessor & ";" _
      & objPrintJob.TargetInstance.TimeSubmitted & ";" _
      & objPrintJob.TargetInstance.TotalPages & ";" _
      & objPrintJob.TargetInstance.StartTime)
      
    
    objWorkbook.SaveAs "C:\"&nomearquivo
    Loop

    quarta-feira, 15 de março de 2017 14:11
  • Para alterar o cabeçalho você altera a linha

     OFile.WriteLine("Owner; Document; PrintProcessor; TimeSubmitted; TotalPages; StartTime; ")

    O conteúdo esta dentro do "Do while true"

      Set objPrintJob = colPrintJobs.NextEvent
      OFile.WriteLine(objPrintJob.TargetInstance.Owner & ";" _
      & objPrintJob.TargetInstance.Document & ";" _
      & objPrintJob.TargetInstance.PrintProcessor & ";" _
      & objPrintJob.TargetInstance.TimeSubmitted & ";" _
      & objPrintJob.TargetInstance.TotalPages & ";" _
      & objPrintJob.TargetInstance.StartTime)
     

     
    quarta-feira, 15 de março de 2017 14:14
  • Romulo,

    Conseguiu fazer o teste? Precisa de mais alguma ajuda?


    On Error Resume Next
    
     Set WshNetwork = WScript.CreateObject("WScript.Network")
     Dim strComputer
     Dim objWMIService
     Dim propValue
     Dim objItem
     Dim SWBemlocator
     Dim UserName
     Dim Password
     Dim colItems
     Dim datahj
     Dim mes
     Dim horario
     Dim acertahora
     Dim acertamin
     Dim nomearquivo
     datahj = Date
     horario = Time
    
     If Month(datahj) < 10 Then
        mes = "0" & Month(datahj)
     Else
        mes = Month(datahj)
     End If
    
     If Hour(horario) < 10 Then
      acertahora = "0" & Hour(horario)
     Else
      acertahora = Hour(horario)
     End If
    
     If Minute(horario) < 10 Then
      acertamin = "0" & Minute(horario)
     Else
      acertamin = Minute(horario)
     End If
    
     nomearquivo = "Impressoes_"&WshNetwork.ComputerName &"_" &WshNetwork.UserDomain &"_" &Year(datahj) &mes &Day(datahj) &"_" &acertahora &"h" &acertamin &"m"
     '&WshNetwork.ComputerName & "_" & WshNetwork.UserDomain & "_"& Year(datahj) & mes & Day(datahj) &"_"& acertahora &"h" & acertamin &"m"
     Set Fso = CreateObject("Scripting.FileSystemObject")
     Set OFile = Fso.CreateTextFile("C:\"&nomearquivo&".txt", 2)
    
     OFile.WriteLine("Owner; Document; PrintProcessor; TimeSubmitted; TotalPages; StartTime; ")
    
     strComputer = "."
     UserName = ""
     Password = ""
    
     Set SWBemlocator = CreateObject("WbemScripting.SWbemLocator")
     Set objWMIService = SWBemlocator.ConnectServer(strComputer,"root\CIMV2",UserName,Password)
    
     Set colPrintJobs = objWMIService. _ 
         ExecNotificationQuery("Select * From __InstanceCreationEvent " _ 
             & "Within 5 Where TargetInstance ISA 'Win32_PrintJob'")
    
     Do While True
      Set objPrintJob = colPrintJobs.NextEvent
      OFile.WriteLine(objPrintJob.TargetInstance.Owner & ";" _
      & objPrintJob.TargetInstance.Document & ";" _
      & objPrintJob.TargetInstance.PrintProcessor & ";" _
      & objPrintJob.TargetInstance.TimeSubmitted & ";" _
      & objPrintJob.TargetInstance.TotalPages & ";" _
      & objPrintJob.TargetInstance.StartTime)
      
    
    objWorkbook.SaveAs "C:\"&nomearquivo
    Loop

    • Sugerido como Resposta Carlos_rodrigues quinta-feira, 16 de março de 2017 17:41
    • Não Sugerido como Resposta Carlos_rodrigues quinta-feira, 16 de março de 2017 17:41
    • Editado Carlos_rodrigues quinta-feira, 16 de março de 2017 17:41 correção
    • Marcado como Resposta Rômulo Augusto quarta-feira, 19 de abril de 2017 14:55
    quinta-feira, 16 de março de 2017 15:04
  • Tudo bem?

    Conseguiu fazer os testes? Se achou útil, por favor, não deixe de votar ou de marcar como resposta, essa é uma forma de incentivar a participação no forum e ajudar aqueles que tem uma duvida semelhante  a achar a solução mais fácil.

    sexta-feira, 31 de março de 2017 13:06
  • Bom dia Carlos peço desculpas pela demora pra responder,acabei precisando implementar outras coisas aqui no trabalho e só voltei a atenção para o script agora.Gostaria de agradecer novamente o apoio em relação a minha dúvida.

    Fiz os testes no Script e agora ele esta gravando no aquivo da seguinte forma:

    Owner; Document; PrintProcessor; TimeSubmitted; TotalPages; StartTime;
    romuloalmeida;Contatos - Bloco de notas;ssu6mPC;20170419112117.198000-180;0;

    Imprimi um arquivo de uma página no bloco de notas e não entendi a informação do "TotalPages" que consta como 0 e tambem o q significa essa parte ".198000-180".

    Estou executando uma serie de testes aqui e estou vendo que existem 2 eventos acontecendo: 1- só escreve no arquivo a captura os dados da primeira impressão após a inicialização do script e as demais impressões nao estão sendo capturadas;2-não captura nem os dados da primeira impressão.

    Fico no aguardo muito obrigado mais uma vez!


    quarta-feira, 19 de abril de 2017 14:31