powershell 格式化存储为 int64 的日期

powershell 格式化存储为 int64 的日期

我正在尝试获取 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")}}

相关内容