ADからPCのログオン日を取得する

08.08

ドメインに参加しているPCは起動時にセキュアチャネルを作成、DCに認証しております。

この認証が行えない状態になると有名な「信頼できるサーバーと通信が・・」状態になり、通常はドメインの再参加でしか改善方法がなくなります。

ドメインと認証を行うとADにあるそのPCのオブジェクトが持つ、LastlogonDateが更新されます。

注意点としては、通常DCは増長構成にするため認証したサーバーではLastlogonDateは即時更新となりますが、他のDCには最大14日以内に伝達されるためLastlogonDateを参照する際は14日以内の日付を指定する場合は、すべてのDCを指定して一番最近の値を取るようにしないといけません。

今回は、あるVM環境のPCで使っていないPCを洗い出した際に使ったスクリプトをご紹介します。

これは45日以内のため特にDCのサーバー名は指定せずに値を取得しております。

また、今回はLastLogonTimeStamp属性を使っております。こちらも14日以内に全DCで同期される値になります。

 

$OutPath = “$env:userprofile\Desktop\Login_within_45Days_CCPC.csv”

$note = “CN” + “`t” + “Samaccountname” + “`t” + “DistinguishedName” + “`t” + “OU” + “`t” + “LastLogonTimeStamp”

$note | out-file $OutPath

$45DaysBefore = (get-date).adddays(-45)

$All = Get-adcomputer -searchbase “対象OUのDistinguishedName” -filter * -properties CN,SAMaccountname,DistinguishedName,CanonicalName,lastLogonTimestamp

$Only45D = $All | select CN,SAMaccountname,DistinguishedName,CanonicalName,@{Name=”LastLogonTimeStamp”;Expression={([datetime]::FromFileTime($_.LastLogonTimeStamp))}} | where-object {$_.LastLogonTimeStamp -lt $45daysBefore}

$Only45D | % {

$note = $null

$note = $_.CN + “`t” + $_.Samaccountname + “`t” + $_.DistinguishedName + “`t” + $_.CanonicalName + “`t” + $_.LastLogonTimeStamp

$note | out-file $OutPath -append

}

 

属性値なんかは必要なものに変更してください。

VMは従量課金制になることがほとんどかと思うので、インフラエンジニアとしてリアルタイムに情報を取得して、なるべく節約していきたいものです。

 

 

 

関連記事

コメント

  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

2018年10月
« 9月    
1234567
891011121314
15161718192021
22232425262728
293031  
ページ上部へ戻る