Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell 将LastLogon转换为日期时间格式_Powershell_Active Directory - Fatal编程技术网

Powershell 将LastLogon转换为日期时间格式

Powershell 将LastLogon转换为日期时间格式,powershell,active-directory,Powershell,Active Directory,我的目标是从我的域中获取包含以下信息的用户列表: -显示名称 -国家 -经理姓名 -上次登录日期 我正在运行下面的脚本,除了最后一次登录之外,其他一切看起来都很好。它将时间输出为一组随机数,如“129948127853609000”。如何将其转换为日期时间格式 Search-ADAccount -UsersOnly -SearchBase "OU=International,DC=mycompany,DC=com" -AccountDisabled:$false | Get-ADUser -Pr

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

-显示名称 -国家 -经理姓名 -上次登录日期

我正在运行下面的脚本,除了最后一次登录之外,其他一切看起来都很好。它将时间输出为一组随机数,如“129948127853609000”。如何将其转换为日期时间格式

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)}}