はじめに
今回の記事ではMicrosoft365ユーザの上司設定を行います。前回の記事でオンプレミスのActive Directory からユーザと上司の関係をCSV出力する記事を記載しました。出力したCSVをMicrosoft365ユーザに登録していきます。上司が登録されていることでPower Automateを使ったワークフローやTeams上での組織構造確認が可能になりますので一定の需要がある属性だと思います。
前提条件
Microsoft Entra ConnectでオンプレミスActive Directory からユーザ情報をプロビジョニングする場合は、上司属性も一緒に同期できるはずですのでこの処理は必要ありません。前回の記事でエクスポートしたCSVファイルをそのまま利用することを前提としています。処理の流れは下記のイメージです。

実行サンプル
今回使うコマンドは下記の通りです。Set-MgUserManagerByRefコマンドレットを利用して上司属性と登録していきます。表のリンクは、各コマンドのメーカーヘルプ記事に遷移します。
| コマンド | 用途 |
|---|---|
| Get-MgUser | メールアドレスからオブジェクトIDを取得します |
| Set-MgUserManagerByRef | 上司属性に値をセットします。 |
| Test-Path | CSVファイルの存在チェックを行います。 |
| Import-Csv | CSVファイルの内容を取り込みます。 |
本プログラムの実行にはインプットファイルとして上司・部下を紐づけするためのCSVファイルが別途必要になります。インプットファイルの仕様は下記の通りです。Active Directory からの出力方法は前回の記事で記載しておりますので合わせてご確認ください。
| カラム | 値 |
|---|---|
| ユーザのメールアドレス | |
| manager | 上司のメールアドレス |
#----------------------------------------------------------------------------------
#Graph Powershellへの接続
#----------------------------------------------------------------------------------
Connect-MgGraph -Scopes "User.ReadWrite.All"
#----------------------------------------------------------------------------------
#環境に合わせて値を修正してください。
#CSVファイルの配置パスを指定します。
$inputCSVPath = "C:\temp\managerList.csv"
#----------------------------------------------------------------------------------
if (Test-Path -Path $inputCSVPath){
$CSV = Import-Csv $inputCSVPath
Foreach ($user in $CSV){
$managerID = (Get-MgUser -UserId $user.manager).Id
$params = @{ "@odata.id" = "https://graph.microsoft.com/v1.0/users/" + $managerID }
Set-MgUserManagerByRef -UserId $user.mail -BodyParameter $params
}
}else{
#指定したパスにCSVファイルがなかった場合にコンソールにメッセージを表示
Write-Host "[Error] CSVファイルが見つかりません"
}
まとめ
今回の記事では、前回ご紹介したActive Directory から上司・部下の関係を出力するで出力されたファイルの活用をご紹介しました。3rdパーティ製品のSSOツールをご利用の場合ほとんどの製品が上司属性は同期できないようになっているかと思います。上司属性はTeamsのみならず、Power Automateや最近はあまり聞かなくなりましたがSharePointワークフローでもよく利用される属性値になりますのでこの記事を参考に上司属性を登録されてみてはいかがでしょうか?
