我正在寻找一个脚本来使用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 回答
你将无法从AD获得 . 您需要在DC上搜索安全事件日志以获取登录/注销事件 .
我通过谷歌搜索了这个线程,寻找登录用户登录的完成方式,我找到了一个有趣的,可能更简单的方法 . 我绝不是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安全日志中 . 这可能是有问题的(或令人讨厌的),或者它可以让非计算机文化(人力资源和管理?)人员轻松访问人员跟踪信息 .