【Outlook】連絡先の写真を一括更新するPowerShell手順

【Outlook】連絡先の写真を一括更新するPowerShell手順
🛡️ 超解決

Microsoft Outlookで、連絡先の写真が古くなっていたり、設定されていなかったりすることはありませんか?

一人ひとりの連絡先を開いて写真を更新するのは、手間がかかり非効率です。

この記事では、PowerShellを使用してOutlook連絡先の写真を一括で更新する手順を解説します。

この手順をマスターすれば、大量の連絡先写真も効率的に管理できるようになります。

【要点】Outlook連絡先の写真をPowerShellで一括更新する

  • Exchange Online PowerShellモジュールのインストールと接続: 連絡先データにアクセスするための準備を行います。
  • 連絡先情報の取得と写真の更新: CSVファイルから連絡先情報を読み込み、指定した写真ファイルで更新します。
  • 更新結果の確認: 更新された連絡先の写真を確認し、意図通りに反映されているかをチェックします。

ADVERTISEMENT

PowerShellで連絡先写真を一括更新する背景

Microsoft Outlookは、ビジネスコミュニケーションにおいて不可欠なツールです。連絡先の写真を設定することで、誰からのメールか一目で判断でき、コミュニケーションの円滑化に貢献します。

しかし、組織変更や個人の写真更新により、連絡先の写真が最新の状態でない場合があります。特に、多数の連絡先を管理している場合、手作業での更新は膨大な時間と労力を要します。

そこで、PowerShellを活用することで、この作業を劇的に効率化できます。PowerShellは、Windowsの強力なコマンドラインシェルおよびスクリプト言語であり、Microsoft 365サービスとの連携も可能です。

Exchange Online PowerShellモジュールを使用すれば、Outlookの連絡先データにアクセスし、写真などの情報をスクリプトで一括操作できます。

お探しの解決策が見つからない場合は、こちらの「Teams/Outlookトラブル完全解決データベース」で他のエラー原因や解決策をチェックしてみてください。

PowerShellで連絡先写真を一括更新する準備

この手順を実行するには、いくつかの準備が必要です。

1. 必要な情報の準備

まず、更新したい連絡先の情報と、設定したい写真ファイルを準備します。

CSVファイルに連絡先情報をまとめる

更新対象となる連絡先の情報(例: メールアドレス、表示名など)をCSVファイルにまとめます。このCSVファイルには、後でスクリプトから参照する情報を含めます。

最低限、連絡先を一意に識別できる情報(例: メールアドレス)が必要です。また、更新する写真ファイルのパスもこのCSVファイルに含めると、スクリプトの記述が簡潔になります。

例えば、以下のような形式のCSVファイルを用意します。

EmailAddress,DisplayName,PhotoPath
user1@example.com,山田太郎,C:\Photos\yamada.jpg
user2@example.com,佐藤花子,C:\Photos\sato.png
user3@example.com,田中一郎,C:\Photos\tanaka.jpeg

写真ファイルを準備する

更新したい連絡先の写真ファイルを、指定した場所にまとめておきます。ファイル形式はJPG、PNG、JPEGなどが利用可能です。

写真ファイル名と、CSVファイルに記載したパスが一致していることを確認してください。

2. Exchange Online PowerShellモジュールのインストールと接続

Outlookの連絡先データは、Exchange Online上に保存されています。そのため、Exchange Online PowerShellモジュールを使用して接続する必要があります。

Exchange Online PowerShellモジュールのインストール

PowerShellを管理者として実行し、以下のコマンドでモジュールをインストールします。

  1. PowerShellを管理者として実行する
    スタートメニューから「PowerShell」と検索し、「Windows PowerShell」を右クリックして「管理者として実行」を選択します。
  2. モジュールのインストールコマンドを実行する
    以下のコマンドを入力し、Enterキーを押します。
    Install-Module -Name ExchangeOnlineManagement
  3. インストール確認
    確認メッセージが表示された場合は、「Y」(はい)または「A」(すべてはい)を入力して続行します。

Exchange Onlineへの接続

モジュールがインストールされたら、以下のコマンドでExchange Onlineに接続します。

  1. 接続コマンドを実行する
    以下のコマンドを入力し、Enterキーを押します。
    Connect-ExchangeOnline -UserPrincipalName your_admin_email@your_domain.com

    「your_admin_email@your_domain.com」は、Microsoft 365の管理者アカウントのメールアドレスに置き換えてください。

  2. サインイン
    サインイン画面が表示されるので、管理者アカウントのパスワードを入力してサインインします。

注意: この手順には、Exchange Onlineへの接続権限を持つアカウントが必要です。組織のポリシーによっては、管理者権限が必要になる場合があります。

連絡先写真の一括更新スクリプトの実行

準備が整ったら、いよいよPowerShellスクリプトを実行して連絡先の写真を一括更新します。

1. 写真更新スクリプトの作成

以下のPowerShellスクリプトを作成し、お好みのエディタ(メモ帳、VS Codeなど)に貼り付け、ファイル名(例: `UpdateContactPhotos.ps1`)を付けて保存します。


# CSVファイルのパスを指定
$csvFilePath = "C:\Path\To\Your\contacts.csv"

# CSVファイルから連絡先情報を読み込む
$contacts = Import-Csv -Path $csvFilePath

# 各連絡先に対して処理を実行
foreach ($contact in $contacts) {
    $email = $contact.EmailAddress
    $displayName = $contact.DisplayName
    $photoPath = $contact.PhotoPath

    # 写真ファイルが存在するか確認
    if (Test-Path -Path $photoPath) {
        try {
            # 写真データをバイナリ形式で読み込む
            $photoBytes = [System.IO.File]::ReadAllBytes($photoPath)

            # 連絡先の写真を更新
            Set-UserPhoto -Identity $email -PictureData $photoBytes -Confirm:$false

            Write-Host "$displayName ($email) の写真が更新されました。"
        } catch {
            Write-Error "$displayName ($email) の写真更新中にエラーが発生しました: $($_.Exception.Message)"
        }
    } else {
        Write-Warning "$displayName ($email) の写真ファイルが見つかりません: $photoPath"
    }
}

Write-Host "写真の一括更新処理が完了しました。"

スクリプト内の設定箇所:

  • `$csvFilePath = “C:\Path\To\Your\contacts.csv”`: ここを、準備したCSVファイルの実際のパスに修正してください。
  • `$contact.EmailAddress`, `$contact.DisplayName`, `$contact.PhotoPath`: CSVファイルのヘッダー名に合わせてください。

2. スクリプトの実行

Exchange Onlineに接続した状態で、保存したPowerShellスクリプトを実行します。

  1. PowerShellウィンドウでスクリプトのパスを指定して実行する
    以下のコマンドを入力し、Enterキーを押します。
    & "C:\Path\To\Your\UpdateContactPhotos.ps1"

    「C:\Path\To\Your\UpdateContactPhotos.ps1」は、作成したスクリプトファイルの実際のパスに修正してください。

  2. 処理の確認
    スクリプトが実行され、各連絡先の写真更新処理が進みます。更新が成功した連絡先や、エラーが発生した連絡先について、コンソールにメッセージが表示されます。

3. 更新結果の確認

スクリプトの実行が完了したら、Outlookで実際に連絡先の写真が更新されているか確認します。

  1. Outlookを開く
    Microsoft Outlookを起動します。
  2. 連絡先リストを確認する
    「連絡先」フォルダーに移動し、写真が更新された連絡先を探します。
  3. 個別の連絡先カードを確認する
    更新対象とした連絡先をダブルクリックして、連絡先カードを開き、写真が正しく表示されているか確認します。

また、PowerShellのコンソールに表示されたメッセージを確認し、エラーや警告が出ていないかチェックすることも重要です。

ADVERTISEMENT

新しいTeams (v2) と従来Teamsでの違い

この手順は、Outlookの連絡先写真を更新するものであり、Microsoft Teamsの機能に直接影響するものではありません。

ただし、TeamsではOutlookの連絡先情報が同期されるため、Outlookで連絡先の写真が更新されれば、Teams上でもその写真が反映されるようになります。

新しいTeams (v2) は、UIやパフォーマンスが改善されていますが、連絡先情報の同期メカニズムは基本的に変わりません。

新しいOutlook と従来Outlookでの違い

このPowerShellスクリプトは、Exchange Online上の連絡先データを操作するため、新しいOutlook (プレビュー版) と従来Outlookのどちらを使用しているかに関わらず、基本的な動作は同じです。

新しいOutlookは、Web版Outlookの機能を取り込み、よりモダンなインターフェースを提供していますが、バックエンドのデータ構造や管理方法はExchange Onlineに依存しています。

そのため、PowerShellによる連絡先写真の一括更新は、新しいOutlook環境でも有効な方法です。

よくある質問とトラブルシューティング

PowerShellスクリプトの実行中に問題が発生した場合の、よくある質問と対処法を以下に示します。

写真が更新されない、または古い写真のまま

原因:

  • CSVファイルのメールアドレスが正しくない。
  • 写真ファイルへのパスが間違っている、またはファイルが存在しない。
  • Exchange Onlineへの接続が切れている。
  • 写真ファイルが破損している、またはサポートされていない形式である。
  • 組織のポリシーで写真の更新が制限されている。

対処法:

  1. CSVファイルの内容を確認する
    メールアドレスのスペルミス、余分な空白がないか確認します。
  2. 写真ファイルのパスと存在を確認する
    スクリプト内のパス指定が正しいか、ファイルが実際にその場所にあるか確認します。
  3. Exchange Onlineへの再接続
    一度切断し、再度Connect-ExchangeOnlineコマンドで接続し直します。
  4. 写真ファイルの形式とサイズを確認する
    JPG, PNGなどの一般的な形式で、ファイルサイズが大きすぎないか確認します。
  5. 組織のIT管理者へ相談する
    上記を確認しても解決しない場合は、組織のポリシーやテナント設定を確認してもらう必要があります。

PowerShellスクリプトの実行権限がない

原因:

  • PowerShellを管理者として実行していない。
  • Exchange Onlineに接続するための十分な権限がないアカウントで接続している。

対処法:

  1. PowerShellを管理者として実行する
    必ず「管理者として実行」を選択してください。
  2. 適切な管理者アカウントで接続する
    Microsoft 365のグローバル管理者またはExchange管理者権限を持つアカウントを使用してください。

Set-UserPhoto コマンドが見つからない

原因:

  • Exchange Online PowerShellモジュールが正しくインストールされていない、または古いバージョンである。
  • Exchange Onlineに接続できていない。

対処法:

  1. モジュールの再インストール
    Uninstall-Module -Name ExchangeOnlineManagementでアンインストールし、再度Install-Module -Name ExchangeOnlineManagementでインストールします。
  2. 接続確認
    Connect-ExchangeOnlineコマンドが成功しているか確認します。

Mac版、モバイル版、Web版での違い

このPowerShellスクリプトは、Windows環境のPowerShellからExchange Onlineへ接続して実行するものです。

Mac版Outlook、モバイル版Outlook (iOS, Android)、Web版Outlook (Outlook on the web) では、直接このPowerShellスクリプトを実行することはできません。

これらのプラットフォームで連絡先の写真を手動で更新する方法は、各アプリケーションのインターフェースを通じて行います。例えば、Web版Outlookでは、アカウント設定からプロフィール写真を変更できます。

しかし、これらのプラットフォームで一括更新が必要な場合は、やはりWindows環境でPowerShellスクリプトを実行し、その結果がExchange Onlineに反映されるのを待つ、という間接的な方法が一般的です。

まとめ

この記事では、PowerShellを使用してMicrosoft Outlookの連絡先写真を一括で更新する手順を解説しました。

Exchange Online PowerShellモジュールをインストール・接続し、CSVファイルと写真ファイルを用意することで、手作業では困難な大量の連絡先写真更新作業を効率化できます。

写真が更新されない場合のトラブルシューティングも併せて理解しておくことで、よりスムーズに作業を進められるでしょう。

今後、連絡先写真の管理が必要になった際には、ぜひこのPowerShellスクリプトを活用してください。

👥
Teams/Outlookトラブル完全解決データベース サインイン、接続エラー、メール送受信の不具合など、特有のトラブル解決策を網羅。困った時の逆引きに活用してください。

ADVERTISEMENT

この記事の監修者
🌐

超解決 リモートワーク研究班

Microsoft 365の導入・保守を専門とするエンジニアグループ。通信障害やサインイン不具合など、ビジネスインフラのトラブル対応に精通しています。