【Microsoft 365】ユーザーの顔写真を管理者が一括でダウンロードする

Microsoft

<景品表示法に基づく表記> 本サイトのコンテンツには、商品プロモーションが含まれている場合があります。

ユーザーの顔写真を管理者が一括でダウンロードすることは出来ますか?
この疑問に回答します。パワーシェルを利用すれば対応することができます。
一括でダウンロードしたいユーザーを抽出した CSV ファイルを作成し、Get-UserPhoto コマンドレットにて写真のダウンロードが可能です。その手順をご紹介します。
Offcie365で利用している顔写真を他のアプリに流用する際には便利です。
  • Exchange Online への接続
  • CSV ファイルの作成
  • 画像データの一括ダウンロード

Exchange Online への接続

事前に以下の URL を参照し Windows PowerShell を Exchange Online に接続します。

関連記事

Office365へのPowerShell接続手順
PowerShellのセットアップ モジュールのインストール モジュールをインストールします PowerShellの設定 PowerShell接続ポリシーを RemoteSigned に設定する。 # Set-ExecutionPolicy...

CSV ファイルの作成

Exchange Online は EDOID を名前として使用(MC365786 )

2022年に利用者のフィードバックに基づき、パラメーターにいくつかの変更を加えることが決定し2023年の9月~10月にかけて実施されました。

そのため、ダウンロードする画像名にNameパラメーターの「名前」が利用できなくなりました。

既存アカウントには影響がありませんが、新規ユーザーは、長い文字列で表示されるようになりました。

Exchange Online の名前パラメーターの構成変更

メッセージの概要
2022 年6 月28 日更新: お客様からのフィードバックに基づき、組織が変更に備えるための追加の時間を提供することを決定しました。
以下のロールアウトタイムラインを更新しました。 ご意見ありがとうございます。

Exchange Online でName パラメーターが設定されている方法にいくつかの変更を加えています。
Exchange Online でのみ、名前パラメーターの代わりに一意の外部ディレクトリ オブジェクトID (EDOID) を使用するように変更を行います。

これが起こるとき:
9月上旬(以前は6月下旬)に展開を開始し、10月下旬(以前は8月下旬)に完了する予定です。

これが組織に与える影響:
この変更後、管理者は、Exchange オンプレミスでのその後のCN 値の変更がExchange Online のオブジェクトのName プロパティに反映されることを確認できなくなる可能性があります。
更新された名前付けロジックは、新しいユーザーの作成中にのみ有効になります。既存のユーザーは、いかなる方法でも影響を受けません。
Exchange Online ではEDOID を名前として使用し始めるため、すべてのユーザー(新規および既存のユーザーの両方) に対して、CN の変更がExchange Online の名前プロパティに反映されることを許可することは停止します。

ユーザー一覧の作成

次のコマンドレットを実行し、全ユーザーのユーザー プリンシパル ネーム (UPN) 一覧を出力し、画像のダウンロードを行うユーザー一覧を作成します。

[構文]
Get-Mailbox -ResultSize Unlimited | Where-Object {$_.HasPicture -eq "False"} | Select UserPrincipalName, HasPicture,ExternalDirectoryObjectId | Export-Csv -NoTypeInformation -Encoding UTF8 -Path <ファイル名を含んだ保存先のパス>

[実行例]
Get-Mailbox -ResultSize Unlimited | Where-Object {$_.HasPicture -eq "False"} |Select UserPrincipalName, HasPicture,ExternalDirectoryObjectId | Export-Csv -NoTypeInformation -Encoding UTF8 -Path C:\Temp\UserPhoto.csv

Where-Object で HasPicture が True のユーザーのみを指定しています。つまり、アイコン画像が設定されているユーザーのみ出力するコマンドレットとなります。

ユーザーのオブジェクトID (EDOID)、も同時に出力するようにしました。

メールアドレスとEDOIDが紐づいているので、別の方法で氏名と紐づけてください。

 CSV ファイルの編集

取得した CSV ファイルを、顔写真をダウンロードしたいユーザーのみに以下の形式で編集します。

※ このファイルを保存する際、保存する文字コードによって文字化けが発生する可能性がありますので、文字コードは UTF-8 に指定します。
※ 写真のサイズ・対象ユーザー数によっては帯域に負荷がかかる可能性があるのでで、対象ユーザー数が多い場合など、CSV ファイルは必要に応じて分割して作成してください。

<CSV ファイルの作成例>
UserPrincipalName
[email protected]
[email protected]
[email protected]

画像データの一括ダウンロード

コマンドレットを使用して顔写真の一括ダウンロードを行います。

事前に画像データの保存先フォルダーを作成してから、コマンドレットを実行してください。
[構文]
Import-CSV -Path "<ファイル名を含んだ保存先のパス>" | ForEach {$user = Get-UserPhoto -identity $_.UserPrincipalName ; $user.PictureData | Set-Content "<ダウンロード先 のパス>\Photo$($user.Identity).jpg" -Encoding byte}

[実行例]
Import-CSV "C:\temp\Userphoto.csv" | ForEach {$user = Get-UserPhoto -identity $_.UserPrincipalName ; $user.PictureData | Set-Content "C:\temp\export\Photo\$($user.Identity).jpg" -Encoding byte}

※ この実行例では、画像データのファイルは C:\temp\export\Photo フォルダー配下に <ユーザー名>.jpg という形式で保存されます。

※ ダウンロード先のフォルダーが存在しない場合や顔写真が設定されていない場合はエラーとなります。

「MC365786」適応後に作成されたアカウントは、ファイル名が EDOID で表示されます。出力したユーザー一覧は、メールアドレスとEDOIDが紐づいているので、メールアドレスと氏名を利用し、別の方法で紐づけてください。

 

以上、「【Office365】ユーザーの顔写真を管理者が一括でダウンロードする」という記事でした。