あくまで一例です。
前提
- Azure ADの表示名に日本語が含まれている
- Azure AD Joinedである
- Windows 10以降のPCを使用している
現象
- Azure AD参加でWindowsのユーザーアカウントを作成すると、DisplayName(表示名)がWindowsのユーザーフォルダ名に使われる
問題点
- ユーザーフォルダ名が日本語だと動かないアプリが出てくる
- VSCodeの拡張機能とか
- 一度ユーザーフォルダを作ってしまうと変更できない
- 正確にはレジストリ書き換えで可能だが、いろいろな不具合が出る可能性があり、MSとしても非推奨
対処法
- Azure ADの表示名を半角英数字だけにする
- 運用上許されるのならばこれがベスト!
- メール誤送信のリスクとかで不可の会社もあるよね…
- Windowsのセットアップ前だけAzure ADの表示名を半角英数字にし、セットアップ完了後に日本語に変える
今回やるのは 2.
実際にやったこと
環境
ユーザー山田太郎を一例に。
- 表示名:Yamada Taro (山田 太郎)
- 姓:山田
- 名:太郎
- UPN:taro.yamada@contoso.com
- これから新たにWindowsのユーザーアカウントを作る
- すでに日本語含んだままユーザーフォルダが作られてしまった人は初期化して再セットアップ
流れ
-
Azure ADアカウントの表示名(DisplayName)フィールドを半角英数字のみにする
- 表示名:taro.yamada
-
ユーザーがWindows PCに初めてサインインする
- ユーザーフォルダが半角英数字で作られる
- taroyamada
.は自動的に削除されます
- ユーザーフォルダが半角英数字で作られる
-
定刻になるとバッチが動いて、Azure ADアカウントの表示名をもとに戻す
- 表示名:Yamada Taro (山田 太郎)
バッチ処理(本題)
3.の処理を実現するために
Power AutomateでGraph APIを毎日午前2時に叩くフローを作った
-
処理内容
- MDMデバイス一覧をGraph APIで取得
- 1.の取得結果1レコードずつに以下を繰り返し処理
- MDMデバイスに紐づくユーザー情報を取得
- ユーザーのdisplayNameが'(surname givenname)'を含んでいるかチェック
- 含んでいない場合のみ以下の処理
- リネーム
-
ポイントになるGraph APIのクエリ
- MDM管理のデバイス一覧を取得(IntuneやO365 Mobile)
- MDM管理デバイスに紐付くユーザーの情報を取得
- ユーザーの表示名を書き換え
- https://graph.microsoft.com/v1.0/users/{user-id}
- PATCHで実行
- リクエストBodyに修正後の表示名を含めたJsonを含める
- APIを叩くためにはAzure ADへのアプリ登録が必要
- 以下を参考に
- https://www.softbanktech.co.jp/special/blog/cloud_blog/2021/0058/
- 必要なAPIアクセス許可はGraph Explorerで1.〜3.のクエリを叩いて確認
Power Automateフロー
その他
あまり考えずにオンプレAD環境からAAD+Intuneへ移行したら、表示名がユーザーフォルダになってしまって、開発チームからクレームの嵐!(ってほどでもないけど、だいぶ困った)
それなりのPC台数あると人力でやるのもつらい。
ユーザー自身に表示名変えてもらう案も考えたけど、ユーザー管理者ロールが必要。それを与えると自分以外のユーザーの名前も変更できてしまう。
一時アクセスパスでうまくやる方法もあるのかな?(要調査)