Active Directory用户登录和注销会话历史记录

时间:2013-10-17 13:35:23

标签: powershell

我正在寻找一个脚本来使用PowerShell生成活动目录域用户登录和注销会话历史记录。以下是我尝试过的脚本。这些仅显示最后登录的会话。

脚本:

$searcher = New-Object DirectoryServices.DirectorySearcher([adsi]"")
$searcher.filter = "(objectclass=user)"
$users = $searcher.findall()
Foreach($user in $users)
{
  if($user.properties.item("lastLogon") -ne 0)
  {
    $a = [datetime]::FromFileTime([int64]::Parse($user.properties.item("lastLogon")))
    "$($user.properties.item(`"name`")) $a"
  }
}

输出:

  

PS C:\ Windows \ system32> C:\用户\管理员\桌面\工作\ lastlogonworked.ps1
  管理员10/17/2013 13:11:31
  DEMO 10/17/2013 13:10:54
  User0 10/17/2013 07:07:07
  User1 10/17/2013 06:29:27
  User2 10/17/2013 08:39:05
  User4 10/17/2013 08:41:36
  User5 10/17/2013 09:38:07
  CPU054 10/17/2013 13:11:53

请有人帮助我获取所有用户登录和退出历史记录。

3 个答案:

答案 0 :(得分:3)

你将无法从AD获得。您需要在DC上搜索安全事件日志以获取登录/注销事件。

答案 1 :(得分:1)

$searcher = New-Object DirectoryServices.DirectorySearcher([adsi]"")
$searcher.filter = "(objectclass=user)"
$users = $searcher.findall()
Out-File C:\logonfile.txt
Foreach($user in $users)
{
  if($user.properties.item("lastLogon") -ne 0)
  {
    $a = [datetime]::FromFileTime([int64]::Parse($user.properties.item("lastLogon")))
    "$($user.properties.item(`"name`")),$a" >> c:\logonfile.CSV

  }
}

答案 2 :(得分:1)

我通过谷歌搜索了这个线程,寻找登录用户登录的方式,我找到了一个有趣的,可能更简单的方法。我绝不是AD专家,这已经由我的前任实施了。我试图找出它是如何完成的。

  • 设置组策略以在登录时运行脚本。在这种情况下,脚本名为“Logon.cmd”
  • 创建一个小批处理文件并将其放在我的位置(在我的例子中):

    C:\ Windows \ SYSVOL \ domain \ Policies {81D ... [SNIP} ... C7} \ User \ Scripts \ Logon

  • 该脚本的内容是一行:

    echo Logon,%COMPUTERNAME%,%USERNAME%,%DATE%,%TIME%>> \ SERVER \ SHARE \%USERNAME%的.csv

现在,这为您提供了一个文件共享,每个用户一个,而不是直接将事件记录到DC上的Windows安全日志。这可能是有问题的(或令人讨厌的),或者它可以让非计算机文化(人力资源和管理?)人员轻松访问人员跟踪信息。

相关问题