首页 文章

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

提问于
浏览
1

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

Script:

$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"
  }
}

Output:

PS C:\ Windows \ system32> C:\ Users \ Administrator \ Desktop \ working \ lastlogonworked.ps1 Administrator 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 回答

  • 1

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

  • 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
    
      }
    }
    
  • 3

    我通过谷歌搜索了这个线程,寻找登录用户登录的完成方式,我找到了一个有趣的,可能更简单的方法 . 我绝不是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安全日志中 . 这可能是有问题的(或令人讨厌的),或者它可以让非计算机文化(人力资源和管理?)人员轻松访问人员跟踪信息 .

相关问题