PowerShell でADユーザーの最終ログオン日時を取得する


使われていない(≒長期間ログインしていない)ADユーザーを無効にしたい。PowerShellで全ユーザーの最終ログオン日時を取得するコマンドを調べたので備忘メモを残しておきます。

前提条件

  • PowerShell バージョン 4.0
  • ADサーバー Windows Server 2012 R2 Standard

作業

以下、最終形までの道のりです

ユーザー一覧を取得

まずはユーザー一覧を取得

Get-ADUser -Filter *

出力されない項目があるので追加します(LastLogon, LastLogonTimestamp, WhenCreated)

Get-ADUser -Filter * -Properties LastLogon, LastLogonTimestamp, WhenCreated

横並び(表形式)に変換

縦並びでズラズラと表示されるので横並びに変換しました

Get-ADUser -Filter * -Properties LastLogon, LastLogonTimestamp, WhenCreated|Format-Table

項目が多すぎるので必要な項目を指定

Get-ADUser -Filter * -Properties LastLogon, LastLogonTimestamp, WhenCreated|
Format-Table SamAccountName, LastLogon, LastLogonTimestamp, WhenCreated

日時を読みやすく変換(LastLogonとLastLogonTimestamp)

Get-ADUser -Filter * -Properties LastLogon, LastLogonTimestamp, WhenCreated|
Format-Table SamAccountName, 
@{name='LastLogon';expression={[DateTime]::FromFileTime($_.LastLogon)}}, 
@{name='LastLogonTimestamp';expression={[DateTime]::FromFileTime($_.LastLogonTimestamp)}}, 
WhenCreated

必要に応じてテキスト出力

テキストに出力しました。あとはテキストエディタでタブ区切りに変換してExcelに貼り付けての作業。

【最終形】

Get-ADUser -Filter * -Properties LastLogon, LastLogonTimestamp, WhenCreated|
Format-Table SamAccountName, 
@{name='LastLogon';expression={[DateTime]::FromFileTime($_.LastLogon)}}, 
@{name='LastLogonTimestamp';expression={[DateTime]::FromFileTime($_.LastLogonTimestamp)}}, 
WhenCreated|
Out-File 'C:\TEMP\aaa.txt'