ヘッダー画像

ActiveDirectoryユーザの上司を自動取得

はじめに

Microsoft365やGoogle Workspaceを運用する中で、上司と部下の関係を取得したいシーンがあると思います。例えば3rdパーティ製品の送信ゲートウェイを利用する場合などがあてはまります。社外へのメール送信は上司をCCに強制追加してから送信させるや、上司が承認するまでメールを止めるといった運用が考えられます。今回の記事ではActive Directory 上のユーザ属性値である上司を取得する方法をご紹介します。

前提条件

今回ご紹介する自動取得ツールは、以下の条件で実行することを前提としています。

  • Active Directory 上でPowershellスクリプトを実行します
  • Active Directory のユーザ属性のうち、電子メール属性に値が入っているもののみを取得します
  • 部下のメールアドレスと上司のメールアドレスをCSVファイルに出力させます
  • 細かいエラーハンドリングを行いませんので上司属性に値がないとエラーが出ます(プログラムは止まりません)
  • Domain Adminsグループのメンバーで実行・確認を実施しています

データ取得準備

まずはActive Directory ユーザの属性メンテナンスを実施しましょう。下記画像を参考に値を入れてください。

Active Directory 部下の属性メンテナンス

続いて上司側もメンテナンスを実施しましょう。直属の部下は自動的に入力されているはずですので、ユーザに上司がいない場合については上司属性が空欄になります。電子メール属性のみをメンテナンスしてください。

Active Directory 上司の属性メンテナンス

利用するコマンド

このプログラムで利用するコマンドは下記の通りです。なんともシンプルに2つだけです。

コマンド用途
Get-ADUserActive Directory からユーザ情報を取得します
Out-Fileファイルに文字を書き込みます
Microsoft Public Affiliate Program (JP)(マイクロソフトアフィリエイトプログラム)

実行サンプル

下記のスクリプトをps1ファイルにして実行していただいても、Powershellウィンドウにそのままコピペしていただいても問題ありません。スクリプトが止まったりはしませんが、上司の値が空の状態だとエラーが出ますので必要に応じてtry catchしてください。

#初期設定 ファイルパス指定してください
$listFile = "C:\temp\xxxxxxx.csv"

"ユーザ,上司" | Out-File $listFile -append

Get-ADUser -Filter * -Properties * |
    %{
        $userMail = ""
        $managerMail = ""

        if($_.mail -ne $null)
        {
            $userMail = $_.mail
            $managerMail = (Get-ADUser -Identity $_.Manager -Properties *).mail
            $userMail + "," + $managerMail | Out-File $listFile -append
        }     
    }

取得結果

実行後は、CSVファイルで下記の形で出力されます。

カラム
ユーザメールアドレス
上司メールアドレス

まとめ

書いてしまえば実はすごく簡単に上司・部下の関係が取得できることが分かったと思います。Azure AD Connect以外の同期ツールではActive Directory の上司属性を同期できるツールがない認識(管理人が知らないだけかも)です。取得したデータを使って上司の値を流し込むことも可能でしょうし、3rdパーティ製品の上司・部下紐づけにも利用できると思います。結局はActive Directory のユーザ属性をいかにメンテナンスしているかが肝になってしまいますがせっかくメンテナンスしているなら有効活用していただけると良いと思ってます。またMicrosoft365関連のPowershellの利用については別記事に記載をしておりますので合わせてご確認いただけますと幸甚です。この記事が皆様の運用の一助となりましたら幸いです。