Powershell 将LastLogon转换为日期时间格式
我的目标是从我的域中获取包含以下信息的用户列表: -显示名称 -国家 -经理姓名 -上次登录日期 我正在运行下面的脚本,除了最后一次登录之外,其他一切看起来都很好。它将时间输出为一组随机数,如“129948127853609000”。如何将其转换为日期时间格式Powershell 将LastLogon转换为日期时间格式,powershell,active-directory,Powershell,Active Directory,我的目标是从我的域中获取包含以下信息的用户列表: -显示名称 -国家 -经理姓名 -上次登录日期 我正在运行下面的脚本,除了最后一次登录之外,其他一切看起来都很好。它将时间输出为一组随机数,如“129948127853609000”。如何将其转换为日期时间格式 Search-ADAccount -UsersOnly -SearchBase "OU=International,DC=mycompany,DC=com" -AccountDisabled:$false | Get-ADUser -Pr
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
DateTime.FromFileTime
应该做到以下几点:
PS C:\> [datetime]::FromFileTime(129948127853609000)
Monday, October 15, 2012 3:13:05 PM
然后,根据您想要格式化它的方式,签出和日期时间格式化字符串
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)}} | ...
LastLogon是用户最后一次登录到您运行GET-ADUser cmdlet时恰巧负载平衡到的域控制器,并且不会在域中复制。如果您想知道最后一个用户登录到域中任何域控制器的时间,您确实应该使用LastLogonTimestamp 使用LastLogonDate属性,您不必转换日期/时间。 LastLogonItemStamp在转换时应等于LastLogonData。
这样,您就可以获得域中的最后登录日期和时间,而无需转换结果。Cool,但是,我该如何将其注入到这个脚本中呢?一行回答让我非常不安。请注意,LastLogonDate和LastLogonTimestamp仅在上一个身份验证请求发生的时间比属性ms DS登录时间同步间隔(默认为14天)的值早时更新。要知道用户帐户或计算机对象是否在过去两周内进行了身份验证(或者如果需要知道实际的上次登录时间),请检查对象的LastLogon属性的值。遗憾的是,LastLogon未在域控制器之间复制,因此您需要查询环境中的所有DC以确定最新的LastLogon值。这是正确的,但还应注意LastLogonTimeStamp并非100%准确。LastLogonItemStamp最多有9-14天不准确。要获得真正的LastLogon,您必须在域中的所有域控制器上查询帐户的LastLogon属性此技术称为什么
@{n='LastLogon';e={[DateTime]::FromFileTime($..LastLogon)}
很抱歉,我自己找到了答案。对于其他好奇的人,它被称为计算属性。n=名称,e=表达式。
Get-ADUser -Filter {Enabled -eq $true} -Properties Name,Manager,LastLogon |
Select-Object Name,Manager,@{n='LastLogon';e={[DateTime]::FromFileTime($_.LastLogon)}}