首页 文章

使用PowerShell登录,注销脚本分析

提问于
浏览
1

我首先要解释一下我想要实现的目标 .

对于他们想要监控PC试验组的项目 . 他们想要以下信息:

  • 已登录的唯一身份用户总数

  • 总登录

  • 每个用户每个会话的时间


所以我继续创建了一个登录和注销脚本 . 这些脚本的输出每月都是一个txt文件 .

例如:文件 01-2017.txt 包含:

25-01-2017,09:29,lky9,WS257737,Logon

25-01-2017,10:37,lky9,WS257737,Logoff

25-01-2017,10:01,1f57,WS157954,Logon

25-01-2017,10:29,7df6,WS248751,Logon

25-01-2017,10:34,7df6,WS248751,Logoff

25-01-2017,10:48,1f57,WS157954,Logoff

现在我(不成功地)尝试使用 Get-Content 在数组中获取所有这些内容 . 因为当我能做到这一点时,我可以进一步尝试 . PowerShell技能仍然很差,但我可以管理数组没关系 . 所以问题是;

任何人都可以向我解释我是如何得到这个数组?

2 回答

  • 0

    我会用一种完全不同的方法 . 事件查看器使用用户ID保存登录和注销时间戳(我认为它是用户的sid) . 然后,您只需要跟踪意外的重新启动,以确保对于那些仅具有该时间的登录事件的会话,这是您的截止点 .

    然后,您可以在计划任务的任何给定时间运行脚本 . 您不必在登录/注销期间运行,这可能会影响登录时间(不多但仍然如此) .

  • 0

    您需要的是使用 Import-CSV cmdlet导入CSV,因为这将为您提供所有记录作为对象数组:

    $logList = Import-Csv -Path "Path_to_01-2017.txt" -Header @('Date', 'Time', 'User', 'PC', 'Type')
    

    Output:

    Date : 25-01-2017
    Time : 09:29
    User : lky9
    PC   : WS257737
    Type : Logon
    
    Date : 25-01-2017
    Time : 10:37
    User : lky9
    PC   : WS257737
    Type : Logoff
    
    Date : 25-01-2017
    Time : 10:01
    User : 1f57
    PC   : WS157954
    Type : Logon
    
    Date : 25-01-2017
    Time : 10:29
    User : 7df6
    PC   : WS248751
    Type : Logon
    
    Date : 25-01-2017
    Time : 10:34
    User : 7df6
    PC   : WS248751
    Type : Logoff
    
    Date : 25-01-2017
    Time : 10:48
    User : 1f57
    PC   : WS157954
    Type : Logoff
    

    举例说明如何使用它来回答您的问题:

    #total unique users that logged on
    $logList.User | select -Unique | Measure | select -ExpandProperty Count
    
    #Total log on
    $logList | where Type -eq LogOn | Measure | select -ExpandProperty Count
    
    #Time of each session per user
    # This is a bit tricky so I leave that up to you :p
    

相关问题