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

时间:2017-01-25 10:16:59

标签: arrays powershell logfile

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

对于他们想要监控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 :(得分:0)

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

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

<强>输出:

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

答案 1 :(得分:0)

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

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

相关问题