1

我正在寻找一个脚本来使用 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:\Users\Administrator\Desktop\working\lastlogonworked.ps1
管理员 10/17/2013 13:11:31
DEMO 10/17/2013 13:10:54
User0 10/17/2013 07:07:07
用户 1 10/17/2013 06:29:27
用户2 10/17/2013 08:39:05
用户4 10/17/2013 08:41:36 用户
5 10/17/2013 09:38:07
CPU054 2013 年 10 月 17 日 13:11:53

请有人帮我获取所有用户的登录和注销历史记录。

4

3 回答 3

3

您将无法从 AD 中获得该信息。您需要在 DC 上的安全事件日志中搜索登录/注销事件。

于 2013-10-17T13:42:02.890 回答
2

我通过谷歌浏览了这个线程,寻找如何记录用户登录,我发现了一个有趣的,可能更简单的方法。我绝不是广告专家,而且我的前任已经实施了这一点。我试图弄清楚它是如何完成的。

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

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

  • 该脚本的内容是一行:

    echo 登录,%COMPUTERNAME%,%USERNAME%,%DATE%,%TIME% >> \SERVER\SHARE\%USERNAME%.csv

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

于 2014-09-04T17:53:22.900 回答
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

  }
}
于 2014-03-14T18:08:38.003 回答