当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 使用 LastLogonTimeStamp 查找不活动的计算机对象

作者:精品下载站 日期:2024-12-14 20:56:35 浏览:15 分类:玩电脑

使用 LastLogonTimeStamp 查找不活动的计算机对象


[玩转系统] 使用 LastLogonTimeStamp 查找不活动的计算机对象

有时我发现自己重新发明了这段代码。也许你也这样做?

您想要解决的问题如下:

如何识别 Active Directory 中过时的计算机对象以便进行一些逾期的内务处理?

有不同的属性可以帮助您获取此信息。我通常使用以下属性:

上次登录时间戳

所有加入域的 Windows 操作系统在 Active Directory 中都有一个帐户和密码,就像用户一样(除了计算机帐户密码长度为 120 个字符!)。

要正确操作计算机帐户,请像用户一样登录到域。

每次用户或计算机登录到 Active Directory 时,身份验证域控制器都会检查帐户的 lastLogonTimeStamp 属性。如果该值早于 14 天,则 lastLogonTimeStamp 属性将更新为当前时间。 14 天检查是为了避免 AD 复制过载,并由域命名上下文中的 ms-DS-Logon-Time-Sync-Interval 属性控制。

如果 lastLogonTimeStamp 属性的值远早于 14 天,则表明该帐户不再处于活动状态。

在此处获取有关 lastLogonTimeStamp 的完整详细信息。

将lastLogonTimeStamp从文件时间转换为日期时间

乍一看,lastLogonTimeStamp 的值看起来有点奇怪。这是我的生日,例如:

116961336000000000

该属性的格式是 FileTime 结构,用于测量自 1601 年 1 月 1 日(UTC 时间)以来 100 纳秒间隔的数量。

出于纯粹的尴尬,我不会为您转换上述值!但我将向您展示如何在 PowerShell 中转换 lastLogonTimeStamp 属性。很简单的:

[datetime]::FromFileTime($Server.lastLogonTimeStamp)

转换完成后,让我们看一下从 Active Directory 获取完整列表的脚本。

如何使用 PowerShell 从 Active Directory 获取所有过时的计算机对象

使用之前的信息,PowerShell 解决方案可能如下所示:

$Servers = Get-ADComputer -Properties lastLogonTimeStamp -Filter * -ResultSetSize $null
"Name;DN;lastLogonTimeStamp" | Out-File ".\ServerList.txt"
ForEach ($Server In $Servers)
{
  $Output = $Server.Name + ";" + $Server.distinguishedName + ";" + [datetime]::FromFileTime($Server.lastLogonTimeStamp)
  Write-Host $Output
  $Output | Out-File ".\ServerList.txt" -Append
}

这将为您提供一个用分号分隔的漂亮列表,其中包含 Active Directory 中所有计算机对象的名称、distinguishedName 和 lastLogonTimeStamp。

该列表将打印到控制台并保存到 txt 文件。

然后,您可以将结果粘贴到 Excel 中并进行所需的所有排序和过滤。

加快您的 Office 365 管理速度

如果您拥有与 Office 365 集成的混合 AD,您可以大大简化您的用户、邮箱和许可证管理!

将 Easy365Manager 扩展安装到 AD 用户和计算机工具,并在一个众所周知的综合工具中管理所有内容。做个聪明人:

[玩转系统] 使用 LastLogonTimeStamp 查找不活动的计算机对象

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯