私の目的は、次の情報を使用してドメインからユーザーのリストを取得することです。
-表示名-国-管理者名-最終ログイン日
私は次のスクリプトを実行していますが、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
DateTime.FromFileTime
トリックを行う必要があります。
PS C:\> [datetime]::FromFileTime(129948127853609000)
Monday, October 15, 2012 3:13:05 PM
次に、フォーマットの方法に応じて、 standard および custom 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)}} | ...
Get-ADUser -Filter {Enabled -eq $true} -Properties Name,Manager,LastLogon |
Select-Object Name,Manager,@{n='LastLogon';e={[DateTime]::FromFileTime($_.LastLogon)}}
LastLogonは、GET-ADUserコマンドレットを実行した時点で負荷分散されていたドメインコントローラーにユーザーが最後にログインした時刻であり、ドメイン間でレプリケートされません。最後のユーザーがドメイン内のドメインコントローラーにログインした時刻が必要な場合は、LastLogonTimestampを実際に使用する必要があります。
LastLogonDateプロパティを使用すると、日付/時刻を変換する必要はありません。 lastLogonTimestampは、変換時にLastLogonDateと等しくなければなりません。これにより、結果を変換する必要なく、ドメイン全体の最終ログオン日時を取得できます。