我正在寻找一个脚本来使用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
请有人帮助我获取所有用户登录和退出历史记录。
答案 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专家,这已经由我的前任实施了。我试图找出它是如何完成的。
创建一个小批处理文件并将其放在我的位置(在我的例子中):
C:\ Windows \ SYSVOL \ domain \ Policies {81D ... [SNIP} ... C7} \ User \ Scripts \ Logon
该脚本的内容是一行:
echo Logon,%COMPUTERNAME%,%USERNAME%,%DATE%,%TIME%>> \ SERVER \ SHARE \%USERNAME%的.csv
现在,这为您提供了一个文件共享,每个用户一个,而不是直接将事件记录到DC上的Windows安全日志。这可能是有问题的(或令人讨厌的),或者它可以让非计算机文化(人力资源和管理?)人员轻松访问人员跟踪信息。