首页 文章

将LastLogon转换为DateTime格式

提问于
浏览
17

我的目标是从我的域中获取用户列表,其中包含以下信息:

  • 显示名称-Country -Manager名称 - 最后登录日期

我正在运行以下脚本,除了LastLogon之外,一切看起来都很好 . 它将时间输入一堆随机数,如“129948127853609000” . 如何将其转换为DateTime格式?

Search-ADAccount -UsersOnly -SearchBase "OU=International,DC=mycompany,DC=com" -AccountDisabled:$false | Get-ADUser -Properties Name, manager, LastLogon | Select Name, manager, LastLogon | export-csv C:\Australia.csv -NoTypeInformation

4 回答

  • 33

    DateTime.FromFileTime 应该做的诀窍:

    PS C:\> [datetime]::FromFileTime(129948127853609000)
    
    Monday, October 15, 2012 3:13:05 PM
    

    然后,根据您希望如何格式化它,查看standardcustom datetime格式字符串 .

    PS C:\> [datetime]::FromFileTime(129948127853609000).ToString('d MMMM')
    15 October
    PS C:\> [datetime]::FromFileTime(129948127853609000).ToString('g')
    10/15/2012 3:13 PM
    

    如果要将其集成到单行中,请将 select 语句更改为:

    ... | Select Name, manager, @{N='LastLogon'; E={[DateTime]::FromFileTime($_.LastLogon)}} | ...
    
  • 4
    Get-ADUser -Filter {Enabled -eq $true} -Properties Name,Manager,LastLogon | 
    Select-Object Name,Manager,@{n='LastLogon';e={[DateTime]::FromFileTime($_.LastLogon)}}
    
  • 1

    LastLogon是用户最后一次登录到您运行GET-ADUser cmdlet和 is not replicated across the domain 时恰好已经负载 balancer 的域控制器 . 如果您希望最后一个用户登录到域中的任何域控制器,您真的应该使用LastLogonTimestamp .

  • 6

    使用 LastLogonDate 属性,您不必转换日期/时间 . 转换时 lastLogonTimestamp 应等于 LastLogonDate . 这样,您将获得跨域的最后登录日期和时间,而无需转换结果 .

相关问题