确定计算机上次启动的时间

确定计算机上次启动的时间

有没有办法通过查询 Active Directory 来确定计算机的运行时间?我想要一种快速的方法来排除域中已关闭(比如说)7 天的计算机。LastLogonTime 字段没有帮助,因为这与用户登录无关。

答案1

没有好的仅使用存储在 Active Directory 中的信息来了解计算机上次开机时间的方法。计算机对象的 LastLogonTimestamp 由计算机更新,所以我不确定你最后一句话的意思。但无论如何它都会有 9 - 14 天的偏差。该属性不会在计算机每次登录到域时更新。这是

dsquery computer -inactive 24

正在查看。由于 lastLogonTimestamp 本身缺乏精确度,因此粒度以周为单位。

您可以重新配置 AD 以更频繁地更新 lastLogonTimestamp 属性,这将产生稍微更准确的值,但这仍然无法帮助您解释已打开但未连接到网络的计算机,或者如果您需要将准确度降低到不到一天的范围内。

http://blogs.technet.com/b/askds/archive/2009/04/15/the-lastlogontimestamp-attribute-what-it-was-designed-for-and-how-it-works.aspx

考虑执行类似在每台计算机上运行的脚本,并查询 Win32_OperatingSystem WMI 类。计算机的精确上次启动时间存储在该 WMI 类中。

Get-WMIObject -Query "SELECT LastBootUpTime From Win32_OperatingSystem" -ComputerName PC02

答案2

虽然我同意 Ryan 的回答,认为没有好的使用存储在 Active Directory 中的信息执行此操作的方式(默认情况下)...

如果您确实需要在 Active Directory 中拥有某些内容,那么最好的方法是设置计算机启动脚本(通过 GPO 部署)以更改计算机对象的某个属性。将时间戳附加到属性是一种经典做法,但是如果您正在寻找一个可以使用的属性并且不想将其附加到描述属性,则description有很多通常不使用的属性(departmentdepartmentNumberemployeeID、等)。employeeNumber

另外,我见过这种事情是通过将机器信息转储到文本或 .csv 文件中(包括启动时间)来实现的Everyone,这些文件具有写入权限,然后管理员使用脚本和/或观察来解析这些信息。我更喜欢 AD 属性方法,但这两种方法都有效。

相关内容