在Active Directory PowerShell中获取活动用户

时间:2016-06-01 08:09:17

标签: powershell active-directory

我创建了一个工具,用于计算最后5分钟Active directory中的活跃用户数。但是,我的脚本总是在相同数量的活跃​​用户周围返回,即使在晚上也是如此。

以下是我的脚本中计算活跃用户的部分:

$Date=Get-Date #Getting the Date of the mesure
$TpsDerLog= ($Date).AddMinutes(-5) #Creating the time marker for inactive user (mesure time - 5 minutes)
$Liste= Get-ADUser -Server "reseau" -filter {(enabled -eq $True) -and (objectclass -eq "user")} #Getting all the enabled accounts in the Active Directory
$ListeN = Get-ADUser -Server "reseau" -filter { (LastLogonTimeStamp -lt $TpsDerLog) -and (objectclass -eq "user") -and (enabled -eq $True) } -Properties LastLogonTimeStamp #Getting the inactive Enabled users 
$nb=($Liste.count)+(-$ListeN.count) #Substracting The inactive users to the total

2 个答案:

答案 0 :(得分:0)

您的代码为您提供了AD中所有活动(未禁用的用户)(保存在$ Liste中)与最近登录到域的用户之间的区别。 5分钟的差异对您没有帮助,因为LastLogonTimeStamp属性计算为14天减去5天的随机百分比。

有用的链接:

LastLogonTimeStamp Attribute

Difference between LastLogon and LastLogonTimeStamp

使用AddDays()方法,您将获得有关用户每天如何登录您的域的更准确结果。

答案 1 :(得分:0)

您尝试做的事情无法通过Active Directory完成。用户可能登录到域并将其会话锁定或从计算机/服务器断开连接,然后回家。

此信息不会传回Active directory,因此LastLogon变量将保持不变,直到用户返回并解锁计算机(针对域控制器进行身份验证)。这就是为什么即使他们已经回家,你也会在晚上看到用户活跃。

您可以判断会话当前是否处于活动状态的唯一方法是询问他们所在的计算机并返回会话状态。但连接到很多域机器并不理想。因此,获取登录用户数量的最佳方法是跟踪域控制器事件日志,并检查具有登录事件但在设定时间段内没有注销事件的用户。