我正在运行一个非常简短的脚本来简单地打印出所有用户和他们最后的login时间:
get-aduser -filter * -property * | ft name,lastlogondate
我注意到只有less数用户拥有logindate值,而绝大多数是空白的。 这些活跃的用户每天都在login。 我的理解是lastlogondate是某种PowerShell别名,它将“lastlogontimestamp”用户属性值从一个大整数转换为可读date。 在过去,我已经成功地使用了这个查询,并且对于一些用户来说它也能正常工作。 我进入ADSIedit,发现所有用户在lastlogontimestamp中都有一个值。 尽pipe如此,如果我直接查询这个值,我仍然在PS中对于每个用户都是空白的:
get-aduser -filter * -property * | ft名,lastlogontimestamp
这种行为在域中的所有3个DC上都是正确的。 我很困惑。 这是一个更大的脚本的一部分,该脚本报告并作用于未login超过X天的用户帐户,并且直到今天一直按季度正常运行。 在今天运行它,我注意到,很less有用户在报告中显示为陈旧,所以在排除故障时,我包括了最基本的查询,看看它会做什么。 在powershell中返回的空白时间戳肯定是错误的,为什么很less用户显示在我的报告陈旧(脚本不包括空白login值),但我不知道为什么PS中的值是空的,而在ADSI编辑器中的值对于特定的用户是绝对的人口稠密。 对于其他一些属性,如“logoncount”也是如此,只有那些受影响的用户(大多数)才能正常工作,而ADSI属性和PS显示的东西之间没有任何关系。
在这个例子中,所有3个DC都是2012 R2,我注意到这个行为也发生在我们拥有的一个较小的混合域(2008和2012 DC)的用户帐户上,但是却没有被注意到,因为几乎没有用户驻留在那里,所以它没有那么多焦点。
另一个重要的事情,如果我运行这个PS命令对计算机帐户Get-AD计算机而不是Get-ADuser我没有这样的问题,所有计算机正确报告lastlogondate没有空白。
在我致电微软之前有任何帮助?
阿迪是对的,这是某种权限问题。 我刚刚解决了这个问题,当一个同事跑了查询并得到了正确的结果,但他用自己的login帐户。 我补充说,他“以pipe理员身份运行”来提升PS控制台。 当我这样做,它正常工作。 我不知道我以前从来没有这样做,而且我是一个域pipe理员,因此在区议会本地pipe理员,但无论如何。 现在它使用提升的PS提示符工作。 为了logging我进入ADSIedit与我的常规使用帐户,并没有启动高架会议…..奇怪,但我会把它。