Exchange 2010以降でPowerShellを使用してメールボックスをエクスポートまたはインポートする方法
Exchange メールボックスのインポート/エクスポートは、ボタンをクリックするほど簡単ではありません。特に、適切なアクセス許可を取得するのが面倒なためです (Windows + Exchange では常に面倒な手続きを強いられます)。適切な設定を行わずにインポート/エクスポートを実行しようとしたことがある場合は、アクセス許可が不足しているというエラーが表示されたり、要求を実行できなかったりしたことがあるでしょう。そこで、インポート/エクスポートを機能させるための基本情報 (確認するアクセス許可、実行するコマンド、問題が発生した場合のトラブルシューティング方法) を説明します。これを正しく実行すれば、PST のエクスポートまたはインポートの手間が大幅に軽減されます。PowerShell を含むコマンド、パスの微調整、アクセス許可の調整が必要になることを想定してください。アクセス許可の不足、ネットワーク アクセスの問題、サーバーの一時的な中断などの問題に遭遇することもあります。これらの問題は、この手順でほとんど解決できるはずです。
Exchangeのメールボックスのインポートとエクスポートの権限を修正する方法
一番の驚きは、Exchangeを新規インストールした場合でも、使用しているアカウントではインポート/エクスポートができないことです。Mailbox Import Export という特別なRBACロールを割り当てる必要がありますが、このロールはデフォルトでは誰にも付与されておらず、管理者にも付与されていません。なぜこれが重要なのでしょうか?このロールがないと、インポート/エクスポートコマンドの実行は完全に失敗します。そのため、まずアカウントにこのロールが付与されているかどうかを確認してください。PowerShellで次のようにロールを割り当てることができます。powershell New-ManagementRoleAssignment –Role “Mailbox Import Export” –User
PowerShell を使用して PST ファイルをメールボックスにインポートする
権限を設定すれば、PST のインポートは通常簡単です。- メールボックスが存在し、PST ファイルが Exchange サーバーからアクセス可能なネットワーク共有上にあることを確認してください。- 共有パスには適切な NTFS 権限が必要です。アカウントにはそのフォルダへの読み取りアクセス権が必要です。- PST ファイルのパスは UNC 形式である必要があります(例: `\\ServerName\Share\PSTFile.pst`)。インポートするには、次のコマンドを使用します。powershell New-MailboxImportRequest -Mailbox userName -FilePath \\Server\Share\PSTFile.pst 特定のフォルダのみをインポートする場合、または既存のフォルダ構造にインポートする場合 は、`-TargetRootFolder “Old_mail”` や `-IncludeFolders “#Inbox#”` などのパラメータを追加します(これらのフォルダ名は Outlook が標準フォルダのリストを保持しているため、非常に具体的です)。補足:ある設定ではコマンドがリクエストを正常にキューに入れるのに、別の設定ではハングしたりエラーが発生したりすることがあります。権限、ネットワークの問題、または PST の破損に注意してください。リクエストは、powershell Get-MailboxImportRequest で確認できます。ステータスは、powershell Get-MailboxImportRequest | Get-MailboxImportRequestStatistics で確認できます。リクエストがスタックまたは失敗した場合は、powershell Get-MailboxImportRequest -Status Failed | Remove-MailboxImportRequest でクリーンアップします。トラブルシューティングのヒント: 不良アイテムが原因でインポートが失敗した場合は、`-BadItemLimit 10` を追加して、一部の破損したアイテムをスキップします (PST がひどく破損している場合は最適な方法ではありませんが、いざというときには役立ちます)。
PowerShell を使用してメールボックスのアイテムを PST ファイルにエクスポートする
エクスポートはインポートとほぼ同じですが、`New-MailboxExportRequest` を使用します。 – PST を保存するフォルダーを作成し、Exchange がそこに書き込めるように Exchange Trusted Subsystem グループに権限を付与します。例: powershell New-MailboxExportRequest -Mailbox userName -FilePath \\Server\Share\userName.pst または、特定のフォルダーの場合は次のようになります: powershell New-MailboxExportRequest -Mailbox userName -FilePath \\Server\Share\userName.pst -IncludeFolders “#Inbox#” 削除済みアイテムなどのフォルダーを除外しますか? powershell New-MailboxExportRequest -Mailbox userName -FilePath \\Server\Share\userName.pst -ExcludeFolders “#DeletedItems#” 日付やキーワードを含むアイテムをフィルターする必要がある場合は、`-ContentFilter` を使用します。ただし、これは単純なフィルター構文であることを覚えておいてください。たとえば、次のようになります。 powershell New-MailboxExportRequest -Mailbox userName -FilePath \\Server\Share\userName.pst -ContentFilter {(Received -ge “01/01/2019”) -and (Body -like “*Project*”)} エクスポート要求がキューに入れられています — 同様に、次のコマンドでステータスを確認します: powershell Get-MailboxExportRequest -Mailbox userName | Format-List 完了したら、古い要求をクリーンアップします: powershell Get-MailboxExportRequest -Status Completed | Remove-MailboxExportRequest 一括エクスポート? ユーザー名をパスにマップする CSV を作成します: csv Username, UNCPathtoPst john, \\Server\Export\john.pst jane, \\Server\Export\jane.pst 次に、次のコマンドを実行します: powershell Import-CSV “C:\path\to\your\list.csv” | ForEach-Object { New-MailboxExportRequest -Mailbox $_. Username -FilePath $_. UNCPathtoPst } 重要なのは権限です。対象フォルダへの書き込み権限が必須です。権限がないとリクエストはそのまま残ります。 — 問題が発生した場合は、リクエストのステータスとエラーを確認してください。サーバーから十分な情報が報告される場合もあれば、そうでない場合もあります。インポート前に、破損したPSTファイルを`scanpst.exe`で修復する必要がある場合があることにご注意ください。この設定により、誰かが数時間も頭を悩ませる手間を省くことができることを願っています。ある取引所では1回目でうまくいきましたが、別の取引所ではうまくいきませんでした。しかし、権限が原因となることが多いので、まずは権限を再確認してください。
まとめ
- PowerShell または EAC 経由でメールボックスのインポート/エクスポートロールを割り当てます。
- PST ファイルが適切な NTFS 権限を持つアクセス可能なネットワーク共有上にあることを確認します。
New-MailboxImportRequestおよびコマンドを使用してNew-MailboxExportRequest、PST のインポート/エクスポートを処理します。- リクエストのステータスを監視し、完了したリクエストを定期的にクリーンアップします。
まとめ
基本的な内容は網羅していますが、特に権限とネットワークアクセスに関しては、多少の試行錯誤が必要になることを覚悟してください。すべてが正しく設定されれば、PSTのインポートとエクスポートははるかに簡単になります。リクエストを注意深く確認し、エラーがないか確認することを忘れないでください。この情報がお役に立てば幸いです。私が見たいくつかの設定ではうまくいきましたので、皆さんにも役立つことを願っています。