Active Directoryユーザーのログオン日時とパスワード変更日時を取得するコマンドレット

管理者側で、Active Directoryドメインサービス(以降、AD)ユーザーのログオン日時(ADドメインへ認証した日時)やパスワード変更日時を把握したいケースがあります。

本記事では、ADユーザーのログオン日時とパスワード変更日時を確認するためのWindows PowerShell(以降、PowerShell)コマンドレットについて記載します。

事前準備

コマンドレットを実行する端末にPowerShell用のADモジュールがインストールされている必要があります。

ADモジュールのインストール方法はこちらのサイトを参照してください。

learn.microsoft.com

PowerShellコマンドレット

  1. コマンドレットを実行する端末でPowerShellを管理者として起動します。
  2. 以下コマンドレットを実行してCSVファイルをエクスポートします。なお、XXX箇所は情報を取得したいユーザーが所属するドメインやOUの情報を記載してください。
$DCs = Get-ADDomainController -Filter *

$Users = Get-ADUser -SearchBase "OU=XXX,DC=XXX,DC=XXX" -Filter * -Properties PasswordLastSet

$Results = foreach ($User in $Users) {
    $LatestLogon = 0

    foreach ($DC in $DCs) {
        $Logon = (Get-ADUser $User.SamAccountName -Server $DC.HostName -Properties LastLogon).LastLogon
        if ($Logon -gt $LatestLogon) {
            $LatestLogon = $Logon
        }
    }

    $LastLogonDate = [DateTime]::FromFileTime($LatestLogon)
    $PasswordLastSetDate = $User.PasswordLastSet

    [PSCustomObject]@{
        Name            = $User.Name
        LastLogon       = $LastLogonDate
        PasswordLastSet = $PasswordLastSetDate
    }
}

$Results | Export-Csv -Path "<任意のCSV出力場所>\<任意のファイル名>.csv" -NoTypeInformation -Encoding UTF8

コマンドレット実行後、以下のような内容のCSVファイルが出力されます。

  • LastLogon:ユーザーのログオン日時
  • PasswordLastSet:ユーザーのパスワード変更日時

なお、CSVファイルのエクスポートが不要な場合は、上記コマンドレットの「$Results」までを残し、「|Export-CSV」以降を削除してコマンドレットを実行します。

終わりに

本記事では、ADユーザーのログオン日時とパスワード変更日時を取得するためのコマンドレットを記載しました。

ぜひ参考にしてみてください。

執筆担当者プロフィール
石澤 聖也

石澤 聖也(日本ビジネスシステムズ株式会社)

主にMicrosoft 365系を扱っています。趣味は筋トレと映画鑑賞。

担当記事一覧