Microsoft 365のプロフィール画像をまとめて登録する方法を紹介する。
他のユーザのプロフィール画像を変更するための権限設定
他のユーザーのプロフィール画像をコマンドで変更するには、管理者権限が必要になる。全体的な管理者「グローバル管理者」権限のあるユーザーであれば可能。
また、細かい権限設定をする場合は、「Microsoft 365 管理センター」で特定のユーザーを選択し、「役割」セクションの「役割の管理」で「管理者の役割の管理」画面で、「Exchange 管理者」「ユーザー管理者」にチェックする。
パソコン毎の初期設定
パソコンごとに初回のみ下記のコマンドを実行する。PowerShellを「管理者として実行」で開き、下記のコマンドを実行する
Install-Module -Name ExchangeOnlineManagement
コマンドを実行するための準備
コマンドを実行するためには、事前にMicrosoft365(Exchange)に接続する必要がある。PowerShellを開き、下記のコマンドを実行して接続する。
Import-Module ExchangeOnlineManagement
Connect-ExchangeOnline
上記のコマンドを実行する。
コマンドを実行すると、実行するユーザーのサインイン画面が表示される。設定権限があるユーザーでサインしよう。自分のユーザー以外でもサインイン可能。
プロフィール画像を登録するコマンド
PowerShellのコマンドで実行することができる。コマンド書式は下記となる。
Set-UserPhoto -Identity "[登録するアカウントのメールアドレス]" -PictureData ([System.IO.File]::ReadAllBytes("[画像のファイルパス]")) -Confirm:$false
一括でコマンドを作成する場合は、Excelでメールアドレスとファイル名の一覧を作り、コマンドを生成すれば良いだろう。
プロフィール画像を削除するコマンド
プロフィール画像を追加したが削除した場合は、下記のコマンドで削除することができる
Remove-UserPhoto -Identity "[削除するアカウントのメールアドレス]" -Confirm:$false
プロフィール画像を登録した後の対応
プロフィール画像を登録すると、Microsoft365の各サービスの画面に反映されていく。
SharepointやOutlookはすぐに反映される模様。
Teamsは反映されない場合があり、数日たっても反映されない。完全に反映させるには、現状はクライアントごとに一度サインアウト→サインインを実施する必要があるようだ。
プロフィール画像の登録コマンドツール作成
上記までで一括して登録はできただろう。その後、アカウントを追加するごとにコマンドを実行するのは面倒である。
ということで、PowerShellのコマンドファイルを作り、毎回コマンドファイルを実行して画像を登録できるようにしよう。
下記のようなコマンドを作成し、「SetUserPhoto.ps1」のファイル名で保存する。
####################################
### created by itmemo123.net
####################################
try {
Import-Module ExchangeOnlineManagement
Connect-ExchangeOnline
####### 画像選択画面を表示
[void][System.Reflection.Assembly]::LoadWithPartialName("System.windows.forms")
$dialog = New-Object System.Windows.Forms.OpenFileDialog
$dialog.Filter = "画像ファイル(*.PNG;*.JPG;*.GIF)|*.PNG;*.JPG;*.JPEG;*.GIF"
$dialog.InitialDirectory = "C:\"
$dialog.Title = "ファイルを選択してください"
$dialog.Multiselect = $false
$ImageFilePath = ""
# ダイアログを表示
if($dialog.ShowDialog() -eq [System.Windows.Forms.DialogResult]::OK){
# 複数選択を許可している時は $dialog.FileNames を利用する
Write-Output ("画像ファイル: " + $dialog.FileName)
$ImageFilePath = $dialog.FileName
}
else {
Write-Output "処理を中止しました!"
pause
exit 1
}
##### メールアドレスを入力
# アセンブリの読み込み
[void][System.Reflection.Assembly]::Load("Microsoft.VisualBasic, Version=8.0.0.0, Culture=Neutral, PublicKeyToken=b03f5f7f11d50a3a")
$mailadr = [Microsoft.VisualBasic.Interaction]::InputBox("メールアドレスを入力してください", "メールアドレス入力")
Write-Output ("メールアドレス: " + $mailadr)
if($mailadr -eq "") {
Write-Output "処理を中止しました!"
pause
exit 2
}
##### 画像をアップロード
Set-UserPhoto -Identity $mailadr -PictureData ([System.IO.File]::ReadAllBytes($ImageFilePath)) -Confirm:$false
Write-Output "画像のアップロード処理が完了しました"
Write-Output "エラーがなければアップロード完了です。"
Disconnect-ExchangeOnline
Pause
}
catch {
Write-Output 画像の登録に失敗しました!"
Pause
}
プロフィール画像の削除コマンドツール作成
削除も作っておくと良いだろう。
下記のようなコマンドを作成し、「RemoveUserPhoto.ps1」のファイル名で保存する。
####################################
### created by itmemo123.net
####################################
try {
Import-Module ExchangeOnlineManagement
Connect-ExchangeOnline
##### メールアドレスを入力
# アセンブリの読み込み
[void][System.Reflection.Assembly]::Load("Microsoft.VisualBasic, Version=8.0.0.0, Culture=Neutral, PublicKeyToken=b03f5f7f11d50a3a")
$mailadr = [Microsoft.VisualBasic.Interaction]::InputBox("メールアドレスを入力してください", "メールアドレス入力")
if($mailadr -eq "") {
Write-Output "処理を中止しました!"
pause
exit 2
}
##### 画像を削除
Remove-UserPhoto -Identity $mailadr -Confirm:$false
Write-Output "画像の削除が完了しました!"
Disconnect-ExchangeOnline
Pause
}
catch {
Write-Output "画像の削除に失敗しました!"
Pause
}
コメント