Converter o LastLogon para o formato DateTime
o meu objectivo é obter uma lista de utilizadores do meu domínio com a seguinte informação:
- Nome do ecrã -Country - Nome Do Gestor - Última data de autenticação
estou a executar o seguinte script, e tudo parece bem, excepto o LastLogon. Ele produz o tempo em um monte de números aleatórios como "129948127853609000". Como posso converter isto para formato 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 answers
DateTime.FromFileTime
deve resultar.
PS C:\> [datetime]::FromFileTime(129948127853609000)
Monday, October 15, 2012 3:13:05 PM
Então, dependendo de como você deseja formatá-lo, confira standard e custom DateTime format strings.
PS C:\> [datetime]::FromFileTime(129948127853609000).ToString('d MMMM')
15 October
PS C:\> [datetime]::FromFileTime(129948127853609000).ToString('g')
10/15/2012 3:13 PM
Se quiser integrar isto no seu invólucro único, mude a sua declaração select
para isto:
... | Select Name, manager, @{N='LastLogon'; E={[DateTime]::FromFileTime($_.LastLogon)}} | ...
Get-ADUser -Filter {Enabled -eq $true} -Properties Name,Manager,LastLogon |
Select-Object Name,Manager,@{n='LastLogon';e={[DateTime]::FromFileTime($_.LastLogon)}}
LastLogon é a última vez que o usuário conectado em qualquer controlador de domínio que tenha sido balanceamento de carga no momento em que você executou o cmdlet GET-ADUser cmdlet, e não é replicado no domínio. Você realmente deve usar LastLogonTimestamp se você quiser a hora que o último usuário logou em qualquer controlador de domínio em seu domínio.
Utilize a propriedade LastLogonDate e não terá de converter a data/hora. lastLogonTimestamp deve ser igual a LastLogonDate quando convertido. Desta forma, você vai obter a última data de logon e hora em todo o domínio sem a necessidade de converter o resultado.