【Q&Aコーナー】Azure ADユーザーの属性をまとめて変更する

皆さんこんにちは。国井です。
今日はAzure ADの話です。

Azure ADユーザーをまとめて作成する/まとめて削除する方法についてはAzure AD管理センターの[一括操作]から行えますが、「設定を変更する」については残念ながらCSVファイルからまとめて操作する方法がありません。
ADManager Plusのようなサードパーティー製品に頼るのも一つの方法ですが、MS純正のやり方としてはWindows PowerShellを使った方法が一般的になります。

Azure ADをWindows PowerShellから扱う場合、Azure AD用のPowerShellモジュールが提供されており、基本的な使い方は@ITさんで解説させていただきました。
(第45, 50, 51回参照)

これを使いながら実際の属性変更を行ってみたいと思います。

インストールから接続まで

Windows PowerShellからAzure ADをはじめて操作するときは最初にモジュールをインストールします。

Install-Module Microsoft.Graph

それができたらAzure ADに接続します。
なお、この操作はPowerShell画面を開くたびに必要な操作になります。

Connect-MgGraph -Scopes "Organization.Read.All","User.ReadWrite.All"

ユーザー一覧の参照

ユーザーの属性変更を行うときは、まずユーザー一覧を参照しましょう。
実行方法はこちら。

Get-MgUser -All

実行結果はご覧のような形になります。このとき、Id列部分に表示されている情報が属性変更に必要な情報になりますので、控えておきます。

image

属性変更の実施

属性変更はUpdate-MgUserコマンドレットを使います。
-UserIdのうしろにGet-MgUserで調べたIdを入れ、-DisplayNameのうしろに表示名を入力すれば、表示名を変更できます。

Update-MgUser -UserId 7d7ab066-d86f-425c-b09e-1905ae25dff4 -DisplayName "緊急管理者"

image

DisplayName以外にも利用可能な属性は色々あります。一覧はこちらでどうぞ。

まとめて変更する

本題に入ります。複数のユーザーに対する設定変更はGet-MgUserコマンドレットでユーザー名を引っ張ってきてまとめて設定するか、CSVファイルからユーザー名を引っ張ってきてまとめて設定するかのいずれかの方法になります。
まずGet-MgUserコマンドレットでユーザー名を引っ張ってくる方法から。

Get-MgUser –All |ft DisplayName,OfficeLocation,jobTitle

と実行して各ユーザーの役職(jobTitle)を確認してみました。

image

そのうえで、OfficeLocation属性を変更することにしました。今回はjobTitle属性がITという文字から始まるユーザーを対象に事業所名を「調布事業所」に変更する設定を行ってみました。

Get-MgUser -Filter "startsWith(jobTitle, 'IT')" | ForEach-Object {Update-MgUser -UserId $_.id -OfficeLocation "調布事業所"}

image

実行後、改めてGet-MgUserコマンドレットを実行してみると設定が変わっていることがわかります。参考までにGet-MgUserコマンドレットで条件を指定するときは startswith 以外にも

Get-MgUser -Filter "jobTitle eq 'IT マネージャー'"

のように完全一致で指定することなどもできます。
(詳しくは@ITさんの記事でどうぞ)

CSVファイルからまとめて変更する

CSVファイルに変更内容をまとめて登録しておき、実行するときは先に次のようなCSVファイルを作っておきます。

image

1行目にuserPrincipalName,jobTitleと書いておき、userPrincipalName列にユーザー名、jobTitle列に変更する属性の値を設定します。
(今回はjobTitleを変更する設定にしました)
それができたら

Import-Csv c:\xxx\xxx.csv |  ForEach-Object {Update-MgUser -UserId $_.userPrincipalName -jobTitle $_.jobTitle}

と書いてCSVファイルに書かれた情報を1行ずつ読み取って実行していきます。
(-userid のうしろに$_.userPrincipalNameと書いているのでuseridではなくUPNが入ります。ちょっと違和感がありますが..)
実行結果はこちら。

image

sekineさん、satomiさんの2人はプリンシパルエンジニアに役職が変わったことがわかります。

まとめ

複数ユーザーに対してまとめてユーザー属性を設定する場合は基本的にWindows PowerShellを利用しなければなりません。
今回はGet-MgUserコマンドレットで対象ユーザーを指定してから設定する方法と
CSVファイルから設定変更するユーザーと属性を指定する方法を紹介しました。
このあたりは会社の運用ではルーティーンになると思いますので、ぜひ自分のものにしてください。