关于 Net User 和 Get-ADUser 的不同输出的非常一般的问题。
当我运行每个命令时,“幕后”到底发生了什么?LastLogonDate
我提出这一点只是因为对于运行这两个命令的任何用户帐户都会得到不同的结果。例如:
Get-ADUser -Identity "Abe" -Properties LastLogonDate
(返回 2021 年 2 月 8 日)Net user "Abe" /Domain
(返回 2/11/2021)
那么,到底发生了什么?我尝试使用ADSI
,但它返回的信息与Get-ADUser
. 如果这与 SO 的含义完全无关,请随时关闭它,我会在其他地方询问。
谢谢!
返回的
Get-ADUser
lastLogonDate 属性映射到 AD 中的 lastLogonTimestamp 属性,该属性已复制但未保持完全准确。请参阅此处的说明。Net User 指的是 AD 属性 lastLogon。这是准确的,但不会在域控制器参考引用之间复制:
有许多脚本收集域控制器循环它们并返回找到的最新值。您可以查看此答案和讨论以获取一些见解。请注意,我们正在解决脚本的性能问题,但仍然有代码示例。
特别有趣,并且在另一个答案中没有提到,这两个属性都存储为 64 位整数,表示自 1601 年 1 月 1 日 12:00 以来 100 纳秒间隔的数量。但是,
Get-ADUser
不会将 lastLogon 转换[DateTime]
为您的典型值。此外,它存储为 UTC,必须转换为本地时间,类似下面的代码说明了这一点:注意:
Net User
似乎做同样的转换。注意:我添加了一个属性而不是覆盖它。这是为了演示,可能需要适应您的大型项目。