none
Script Gravar Usuário que faz Logoff RRS feed

  • Pergunta

  • Preciso de um script para rodar na GPO no logoff do usuário. Quero que seja gravado em um arquivo texto

    o nome do usuário, máquina, data e hora do logoff. Não sei se é possível também na finalização da máquina ter um script para gravar a data e hora que a máquina foi desligada.

    Obrigado.

     

    terça-feira, 26 de fevereiro de 2008 01:19

Respostas

  •  

    Olá Marsene,

     

    Criei o script abaixo e estou usando na minha rede.

     

    Option Explicit

    Dim objFSO, objLogtxt, objNetwork, objShell, strText, intAns
    Dim intConstants, intTimeout, strTitle, intCount, blnLog, data, systime
    Dim strUserName, strComputerName, strIP, strShare, strLogFile, local
    Dim fso, sf, StrNew
    Const ForAppending = 8
    systime = Now()
    data= cstr(day(systime)& "-" & cstr(month(systime)) & "-" & cstr(year(systime)))
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objNetwork = CreateObject("Wscript.Network")
    Set objShell = CreateObject("Wscript.Shell")
    Set  local= CreateObject("Scripting.FileSystemObject")

    strUserName = objNetwork.UserName
    strComputerName = objNetwork.ComputerName



    If (local.FileExists("\\server\folder\"& data & ".txt")) Then
     strShare = "\\server\folder\"
     strLogFile = ""& data & ".txt"
      If objFSO.FolderExists(strShare) Then
       Set objLogtxt = objFSO.OpenTextFile(strShare & "\" & strLogFile, 8, True, 0)
       If Err.Number = 0 Then
         intCount = 1
         blnLog = False
        Do Until intCount = 3
         objLogtxt.WriteLine"Logoff,  "  & strUserName &",   "&data&",   " & Time &",    "& strComputerName
         If Err.Number = 0 Then
          intCount = 3
          blnLog = True
         Else
          Err.Clear
          intCount = intCount + 1
          If Wscript.Version > 5 Then
           Wscript.Sleep 200
         End If
        End If
       Loop
      End If
     End If
    else
     strShare = "\\server\folder\"
     strLogFile = ""& data & ".txt"
     intTimeout = 20
      If objFSO.FolderExists(strShare) Then
       Set objLogtxt = objFSO.OpenTextFile(strShare & "\" & strLogFile, 8, True, 0)
       objLogtxt.WriteLine " Evento, "&"  Usuário,"& "  Data,"& "   Horas , "&"  Computador "
        If Err.Number = 0 Then
         intCount = 1
         blnLog = False
        Do Until intCount = 3
         objLogtxt.WriteLine "Logoff,  "  & strUserName &",   "&data&",   " &Time &",    "& strComputerName
         If Err.Number = 0 Then
          intCount = 3
          blnLog = True
         Else
          Err.Clear
         intCount = intCount + 1
         If Wscript.Version > 5 Then
           Wscript.Sleep 200
          End If
        End If
        Loop
      End If
     End If

    End If 

    Espero te ajudado.

     

    Saulo Januzzi

    sauloscj@yahoo.com.br

     

    Se este script ajudou, não esqueça de classifica-lo.

    sexta-feira, 29 de fevereiro de 2008 12:55

Todas as Respostas

  • Veja como seria com um arquivo .cmd:


    echo date /t >> \\server\suporte$\logoff.txt
    echo %username% >> \\server\suporte$\logoff.txt




    --
    Vinicius Canto
    MVP Windows Server - Admin Frameworks
    MCP Windows 2000 Server, Windows XP e SQL Server 2000
    Bacharelando em Ciências da Computação - USP

    Blog sobre Scripting e Windows Powershell: http://viniciuscanto.blogspot.com
    quarta-feira, 27 de fevereiro de 2008 02:54
    Moderador
  •  

    Olá Marsene,

     

    Criei o script abaixo e estou usando na minha rede.

     

    Option Explicit

    Dim objFSO, objLogtxt, objNetwork, objShell, strText, intAns
    Dim intConstants, intTimeout, strTitle, intCount, blnLog, data, systime
    Dim strUserName, strComputerName, strIP, strShare, strLogFile, local
    Dim fso, sf, StrNew
    Const ForAppending = 8
    systime = Now()
    data= cstr(day(systime)& "-" & cstr(month(systime)) & "-" & cstr(year(systime)))
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objNetwork = CreateObject("Wscript.Network")
    Set objShell = CreateObject("Wscript.Shell")
    Set  local= CreateObject("Scripting.FileSystemObject")

    strUserName = objNetwork.UserName
    strComputerName = objNetwork.ComputerName



    If (local.FileExists("\\server\folder\"& data & ".txt")) Then
     strShare = "\\server\folder\"
     strLogFile = ""& data & ".txt"
      If objFSO.FolderExists(strShare) Then
       Set objLogtxt = objFSO.OpenTextFile(strShare & "\" & strLogFile, 8, True, 0)
       If Err.Number = 0 Then
         intCount = 1
         blnLog = False
        Do Until intCount = 3
         objLogtxt.WriteLine"Logoff,  "  & strUserName &",   "&data&",   " & Time &",    "& strComputerName
         If Err.Number = 0 Then
          intCount = 3
          blnLog = True
         Else
          Err.Clear
          intCount = intCount + 1
          If Wscript.Version > 5 Then
           Wscript.Sleep 200
         End If
        End If
       Loop
      End If
     End If
    else
     strShare = "\\server\folder\"
     strLogFile = ""& data & ".txt"
     intTimeout = 20
      If objFSO.FolderExists(strShare) Then
       Set objLogtxt = objFSO.OpenTextFile(strShare & "\" & strLogFile, 8, True, 0)
       objLogtxt.WriteLine " Evento, "&"  Usuário,"& "  Data,"& "   Horas , "&"  Computador "
        If Err.Number = 0 Then
         intCount = 1
         blnLog = False
        Do Until intCount = 3
         objLogtxt.WriteLine "Logoff,  "  & strUserName &",   "&data&",   " &Time &",    "& strComputerName
         If Err.Number = 0 Then
          intCount = 3
          blnLog = True
         Else
          Err.Clear
         intCount = intCount + 1
         If Wscript.Version > 5 Then
           Wscript.Sleep 200
          End If
        End If
        Loop
      End If
     End If

    End If 

    Espero te ajudado.

     

    Saulo Januzzi

    sauloscj@yahoo.com.br

     

    Se este script ajudou, não esqueça de classifica-lo.

    sexta-feira, 29 de fevereiro de 2008 12:55
  • Saulo ficou otimo.

    Estou pesquisando uma forma de gravar em um xls e não em um .txt.

    Mas gravar tudo separado em colunas.

    Se tiver como me ajudar ficarei agradecido e acho que irá ajudar a todos tambem.
    sexta-feira, 29 de fevereiro de 2008 16:42
  • Veja como ficaria com um BAT:

    for /f "tokens=*" %%i in ('date /t') do set dt=%%i
    echo %username%,%dt% >> \\server\share\teste.csv


    Aí é só importar o CSV no Excel. Pra isso, procure sobre recursos de obtenção de dados externos no Excel.


    []s,


    --
    Vinicius Canto
    MVP Windows Server - Admin Frameworks
    MCP Windows 2000 Server, Windows XP e SQL Server 2000
    Bacharelando em Ciências da Computação - USP

    Blog sobre Scripting e Windows Powershell: http://viniciuscanto.blogspot.com
    sexta-feira, 29 de fevereiro de 2008 23:56
    Moderador
  • Adriano,

     

    É só colocar csv no lugar do txt que vai funcionar perfeitamente.

     

    Falow

     

    quarta-feira, 5 de março de 2008 20:08
  • Rsrs .. fiz isso a alguns dias e ta funcionando certinho ......

     

    Valeu ..

    quinta-feira, 6 de março de 2008 01:52
  • Blz Adriano, qualquer coisa é só falar.

     

    Saulo

    Se este script ajudou, não esqueça de classifica-lo.

     

    quinta-feira, 6 de março de 2008 10:52