脱!公務員ブログ

元地方公務員(市役所職員)→商社系Sier→ベンチャーITコンサルの経歴を持つブログ運営者が、自身の体験を元に公務員の実態や役立つ知識や経験談、IT関連の技術的な情報、美味しいお店の情報、趣味(野球、音楽、ゲーム、麻雀)に関すること、私自身の波乱に満ちた人生経験について発信します。記事を読んだ後は少し知識が増えて、笑顔になれる(ネタ要素満載)、そんなブログですので是非お立ち寄り下さい♪

【PowerShell】長期間ログオンしていないActiveDirectoryのユーザーをCSVで出力する方法

本記事は、PowerShellを利用してActiveDirectoryの長期間ログオンしていないユーザーをCSVで出力するスクリプトのサンプルです。

ADのアカウントは、定期的に整理しないと不要なアカウントだらけになってしまいがちです。

ですが、このスクリプトを使用することで、ログオンしていないユーザーアカウントを効率よく把握することができます。

ログオンしていない日数とドメインコントローラーのIPをセットするだけですぐ使えますので、アカウント管理にお困りの方はぜひご活用ください!

それではご説明させていただきます。

PowerShellのアイコン画像

スクリプトのサンプル

スクリプトのサンプルです。

AD上にファイルを設置し処理を実行すると、指定したパスで長期間ログオンしていないユーザーアカウントをCSV出力します。

長期間ログオンしてないADユーザーアカウントをCSV出力する

仕様

  • 複数ADがある場合、全てのADのIPをセットすることで、各ADの情報を統合して一番最新のログオン日時で判定する
  • 出力するCSVUTF-8エンコード(文字化け対応)
  • CSVの項目はユーザーアカウント名と最終ログオン日時
  • 無効となっているアカウントは出力対象としない

使い方

  1. 処理を行うAD上のサーバーに、スクリプトファイルを保存
  2. スクリプト5行目の「.AddDays(-90)」の値を判定したい日数とする(サンプルファイルのまま使用すると90日以上ログオンしてないユーザーが対象となる)
  3. スクリプトの8行目の「$domainControllerIPs」の配列の値を、使用する環境のドメインコントローラーのIPとする
  4. 54行目の「Export-Csv -Path」の引数を、必要に応じて変更(出力CSVのパス)
  5. 管理者権限でPowerShellを実行する

処理が終わると、指定したパスにCSVが出力されます。

以下はCSVファイルのサンプル画像です。

出力CSVのサンプル画像

※見やすくするために、Excelのアプリケーションで表示しています。

あとがき

長期間ログオンしていないActiveDirectoryユーザーを出力するPowerShellでした。

記事に記載しているスクリプトをコピペし、記事に記載した内容を参考に環境に応じて調整するだけで簡単に使えるものですので、ぜひご活用ください!

また、他にもPowerShellでインフラ管理業務に使えるものを紹介している記事がありますので、ご興味のある方は下記リンクからご一読ください。

↓ADユーザーのセキュリティグループを、PowerShellで一括変更する方法です。人事異動や組織変更の際に活用できます。

www.withdrawal-civilservice.com

↓ADユーザーをPowerShellで一括作成する方法です。登録作業の効率化により、AD運用負荷軽減が期待できます。

www.withdrawal-civilservice.com

PowerShellで指定したフォルダ配下の全ファイルのファイルパスと、容量を降順にソートしてCSV出力するスクリプトの記事です。ファイル整理作業のお供にどうぞ。

www.withdrawal-civilservice.com

PowerShellでAzureADからメールエイリアスを抽出する方法の記事

www.withdrawal-civilservice.com