ヘッダー画像

Microsoft365ユーザの上司設定を一括処理

はじめに

今回の記事ではMicrosoft365ユーザの上司設定を行います。前回の記事でオンプレミスのActive Directory からユーザと上司の関係をCSV出力する記事を記載しました。出力したCSVをMicrosoft365ユーザに登録していきます。上司が登録されていることでPower Automateを使ったワークフローやTeams上での組織構造確認が可能になりますので一定の需要がある属性だと思います。

前提

Azure AD ConnectでオンプレミスActive Directory からユーザ情報をプロビジョニングする場合は、上司属性も一緒に同期できるはずですのでこの処理は必要ありません。前回の記事でエクスポートしたCSVファイルをそのまま利用しることを前提としています。処理の流れは下記のイメージです。

処理イメージ

Powershellで書いてみる

今回使うコマンドは下記の通りです。Set-AzureADUserManagerコマンドレットを利用して上司属性と登録していきます。表のリンクは、各コマンドのメーカーヘルプ記事に遷移します。

コマンド用途
Get-AzureADUserメールアドレスからオブジェクトIDを取得します
Set-AzureADUserManager上司属性に値をセットします。
Get-AzureADUserManager実行結果の確認に使用します。
Test-PathCSVファイルの存在チェックを行います。
Import-CsvCSVファイルの内容を取り込みます。

本プログラムの実行にはインプットファイルとして上司・部下を紐づけするためのCSVファイルが別途必要になります。インプットファイルの仕様は下記の通りです。Active Directory からの出力方法は前回の記事で記載しておりますので合わせてご確認ください。

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

実際のソースコードを書いていきます。-RefObjectIdオプションはUPN(メールアドレス)のままだと登録できないようなので、一度ObjectIDを取得する処理を含めています。Powershellを使ったMicrosoft365各機能への接続は別の記事で紹介していますのであわせてご確認ください。

#初期設定
#環境に合わせて変更してください。
$UserName = "管理者アカウント名"
$Passwd = "管理者パスワード"
$inputCSVPath = "C:\temp\Managerlist.csv"

$CvtPass = ConvertTo-SecureString $Passwd -AsPlainText -Force
$UserCredential = New-Object System.Management.Automation.PSCredential($UserName,$CvtPass)

#Azure Active Directoryへの接続
Connect-AzureAD -Credential $UserCredential

#CSVファイルから上司・部下の紐づけを取得 
if (Test-Path -Path $inputCSVPath){
    $csv = Import-Csv $inputCSVPath
    Foreach ($user in $csv){
        $userObjectID = (Get-AzureADUser -ObjectId $user.ユーザ).ObjectID
        $managerObjectID = (Get-AzureADUser -ObjectId $user.上司).ObjectID
        Set-AzureADUserManager -ObjectId $userObjectID -RefObjectId $managerObjectID
    }
}
Microsoft Public Affiliate Program (JP)(マイクロソフトアフィリエイトプログラム)

結果の確認

それでは登録結果の確認を行います。この例ではTeamsのダイレクトチャットで確認を行っています。エンジニア太郎さんの上司はテストさんだということがこれで把握することが可能になります。上司にクレーム入れるときに活用できそうです(違

Teamsでの組織表示

Powershellで確認したい場合はこんな感じで一覧に出せます。下記例では割愛してますが、AzureADコマンドレットに接続してから実行してください。

$list = @()
$Users =Get-AzureADUser

foreach( $User in $Users){ 
    $Manager =Get-AzureADUserManager -ObjectId $User.ObjectID
    $list += [pscustomobject]@{User=$User.UserPrincipalName
                        Manager=$Manager.UserPrincipalName}
}
$list

まとめ

今回の記事では、前回ご紹介したActive Directory から上司・部下の関係を出力するで出力されたファイルの活用をご紹介しました。3rdパーティ製品のSSOツールをご利用の場合ほとんどの製品が上司属性は同期できないようになっているかと思います。上司属性はTeamsのみならず、Power Automateや最近はあまり聞かなくなりましたがSharePointワークフローでもよく利用される属性値になりますのでこの記事を参考に上司属性を登録されてみてはいかがでしょうか?本記事が皆様の運用管理の一助となりましたら幸いです。