我正在尝试获取 AD 域中的用户列表及其密码过期时间。目前我在 PowerShell 中已获得以下信息:
get-aduser -filter * -properties "msDS-UserPasswordExpiryTimeComputed" | select name,samaccountname,@{Name="Expiry";Expression="msDS-UserPasswordExpiryTimeComputed"}
结果是这样的:
name samaccountname Expiry
---- -------------- ------
longneck longneck 129802700808178073
如何将 Expiry 列转换为日期时间?我尝试过以下方法:
get-aduser -filter * -properties "msDS-UserPasswordExpiryTimeComputed" | select name,samaccountname,@{Name="Expiry";Expression={[datetime]::FromFileTime("msDS-UserPasswordExpiryTimeComputed")}}
但这只会导致 Expiry 列为空白。
name samaccountname Expiry
---- -------------- ------
longneck longneck
我究竟做错了什么?
答案1
你缺少$_
了哪个msDS-UserPasswordExpiryTimeComputed
表达式中使用的对象属性。$_
变量是管道中的默认当前对象。您可以在 中找到该值$_."msDS-UserPasswordExpiryTimeComputed"
。
Get-ADUser -Filter * -Properties "msDS-UserPasswordExpiryTimeComputed" |
Select-Object name,samaccountname,@{Name="Expry";Expression={[datetime]::FromFileTime($_."msDS-UserPasswordExpiryTimeComputed")}}