Microsoft 365 との間で移行されたメールボックスのメールボックスの問題をアーカイブする

元の KB 番号: 2757430

問題

Microsoft 365 との間でメールボックスを移行し、アーカイブ メールボックスを使用すると、移行の終了時にメールボックスの ArchiveDomain プロパティのターゲット ドメイン値がMicrosoft Exchange Onlineの Microsoft Exchange メールボックス レプリケーション サービス (MRS) によってスタンプされる問題が発生します。

注:

この問題は、アーカイブ メールボックスを持たないアカウントでは発生しません。

アーカイブ メールボックスに関連するシナリオは 5 つあります。 シナリオごとに異なる解決策が必要です。

  • シナリオ 1 - オンボード: オンプレミスのMicrosoft Exchange ServerメールボックスをExchange Onlineに移動します。
  • シナリオ 2 - オンボード: アーカイブ メールボックスがExchange Onlineに存在し、オンプレミスのExchange Server環境からExchange Onlineにプライマリ メールボックスを移動します。
  • シナリオ 3 - オフボード: アーカイブ メールボックスを有効にしてから、プライマリ メールボックスとアーカイブ メールボックスの両方をExchange OnlineからオンプレミスのExchange Server環境に移行します。 同様のシナリオは、プライマリ メールボックスが既にオンプレミスにあり、アーカイブ メールボックスをExchange OnlineからオンプレミスのExchange Server環境にオフボードすることにした場合にも発生します。
  • シナリオ 4 - オフボード: プライマリ メールボックスにアーカイブ メールボックスが有効になっていないこと、プライマリ メールボックスをExchange OnlineからオンプレミスのExchange Server環境に移動します。
  • シナリオ 5 - オフボード: プライマリ メールボックスはオンプレミスのExchange Server環境に存在し、アーカイブ メールボックスはExchange Onlineに存在します。 このシナリオは、次のいずれかのアクションを実行するときに発生する可能性があります。
    • プライマリ メールボックスに乗り込む。 ただし、アーカイブ メールボックスはExchange Onlineのままにしておきます。
    • プライマリ メールボックスとアーカイブ メールボックスの両方が、オンプレミスのExchange Server環境にあります。 ただし、アーカイブ メールボックスのみをオンボードします。

    注:

    サポートされている唯一のアーカイブ分割シナリオは、オンプレミスのプライマリ メールボックスと、Exchange Online内のアーカイブ メールボックスです。

原因

この問題は、オンプレミスのExchange Server環境とExchange Onlineの間でメールボックスが移行された場合に発生します。

次のWindows PowerShell コマンドレットを使用してアーカイブ プロパティを表示すると、アーカイブの状態が [アクティブ] になっていることがわかります。 ただし、アーカイブ情報の多くは欠落しています。

Get-Mailbox alias |fl Name, Archive*

注:

オンプレミスの Exchange 管理シェルまたは PowerShell Exchange Onlineを使用してコマンドレットを実行できます。 Exchange Online PowerShell の使用方法の詳細については、「Windows PowerShellをサービスに接続する」を参照してください。

コマンドレットを実行すると、結果は次のようになります。

Name : jsmith
ArchiveDatabase :
ArchiveGuid : 00000000-0000-0000-0000-000000000000
ArchiveName : {}
ArchiveQuota : 100 GB (107,374,182,400 bytes)
ArchiveWarningQuota : 90 GB (96,636,764,160 bytes)
ArchiveDomain : contoso.mail.onmicrosoft.com
ArchiveStatus : Active

ソリューション

この問題を解決するには、シナリオに応じて、次のいずれかの方法を使用します。

シナリオ 1

シナリオ 1 の問題は、次のように解決されました。Exchange Onlineへのオンボード移行はすべて対処され、アーカイブ メールボックスがテナント管理者によって有効になるまで ArchiveDomain プロパティは設定されなくなりました。

この問題が解決される前に、ユーザーは Outlook にアーカイブ メールボックスが存在すると報告し、認証プロンプトを受け取っていました。 ただし、ユーザーはOutlook Web Appに同じアーカイブ メールボックスを表示できません。 (Microsoft はアーカイブを "ゴースト アーカイブ" と呼びます。これは、ユーザーがアクセスできる真のアーカイブ メールボックスではないためです。

シナリオ 2

シナリオ 2 の問題は、次のように解決されました。メールボックスの移動を担当する MRS コンポーネントが、Exchange Onlineアーカイブ メールボックスの存在に正しく影響するようになりました。 そのため、ユーザーは Outlook または Outlook Web Appのアーカイブ メールボックスにエラーなしで正しくアクセスできます。 何もする必要はありません。

シナリオ 3

シナリオ 3 の両方のバリエーションの問題は、次のように解決されます。Exchange Onlineの MRS は ArchiveDomain プロパティの値をオンプレミス ドメインに設定します。 そのため、ユーザーは Outlook または Outlook Web Appのアーカイブ メールボックスにエラーなしで正しくアクセスできます。 何もする必要はありません。

シナリオ 4

シナリオ 4 の問題は次のように解決されました。このシナリオでは、Exchange Onlineの MRS によって ArchiveDomain プロパティの値がオンプレミス ドメインに設定されます。 そのため、アーカイブ メールボックスが有効になっていない場合でも、Outlook にアーカイブ メールボックスが存在することがユーザーに表示されます。 このアーカイブは、シナリオ 1 の 「解決」セクションに記載されている "ゴースト アーカイブ" に似ています。 ただし、アーカイブでは、オンプレミスのExchange Server環境の Exchange 管理者が、「シナリオ 5 の解決」セクションで提供されているスクリプトを実行する必要があります。 Microsoft では、このシナリオを解決するための更新プログラムをデプロイしました。 したがって、将来のオフボードは影響を受けなくなります。

Exchange Onlineからのオフボード移行を実行するときに影響を受けるかどうかを判断するには、スキャン モードで「シナリオ 5 の解決」セクションに記載されているスクリプトを実行します。

シナリオ 5

このシナリオでは、ArchiveDomain プロパティの値がオンプレミス ドメインに設定されます。 そのため、Outlook はアーカイブ メールボックスを見つけて開くできません。

シナリオ 4 と 5 を解決するために、Microsoft は、メールボックスを Exchange Online からオンプレミスのExchange Server環境に戻す場合に必要な属性を自動的に変更するのに役立つ次のスクリプトを提供します。 スクリプトを実行するには、次の手順に従います。

  1. メモ帳を起動します。
  2. 次のスクリプトをコピーしてメモ帳に貼り付けます。
#-------------------------------------------------------------------------------
#
# Copyright (c) Microsoft Corporation. All rights reserved.
#
# PLEASE NOTE:
# Microsoft Corporation (or based on where you live, one of its affiliates)
# licenses this supplement to you. You may use it with each validly licensed
# copy of Microsoft Online Services Migration Tools software (the "software").
# You may not use the supplement if you do not have a license for the software.
# The license terms for the software apply to your use of this supplement.
# Microsoft may provide support services for the supplement as described at
# http://www.support.microsoft.com/common/international.aspx.
#
#-------------------------------------------------------------------------------
#
# PowerShell Source Code
#
param([Parameter(Mandatory = $false)]
[string]$TenantCloudDomain,
[Parameter(Mandatory = $false)]
[string]$Domain,
[Parameter(Mandatory = $false)]
[Switch]$Fix,
[Parameter(Mandatory = $false)]
[Switch]$FindAllUsersInForest
)
function GetNameFromDN([string]$dn)
{
if ($dn.Length -eq 0) { return $null; }
return ($dn -split ",")[0].Replace("CN=", "")
}
Import-Module ActiveDirectory
If ($TenantCloudDomain.Length -eq 0) {
$ldapQuery = "(&(objectClass=user)(msExchArchiveAddress=*))"
} else {
$ldapQuery = "(&(objectClass=user)(msExchArchiveAddress=*)(!(&(msExchArchiveGuid=*)(!(msExchArchiveDatabaseLink=*))(msExchArchiveAddress=$TenantCloudDomain))))"
}
if ($Domain.Length -eq 0) {
# default domain to computer's domai
$computer = Get-WmiObject -Class Win32_ComputerSystem
$Domain = $computer.Domai
}
if ($FindAllUsersInForest -and $Fix) {
throw "You cannot specify -FindAllUsersInForest when running in -Fix mode, only one domain can be cleaned up at a time."
}
Write-Host "Looking for objects to clean up in ${Domain}: ${ldapQuery}"
$propertiesToLoad = @("msExchMailboxGuid","homeMDB","msExchArchiveGuid","msExchArchiveDatabaseLink","msExchArchiveAddress")
$tsStart = [DateTime](Get-Date)
if ($FindAllUsersInForest) {
$m = Get-ADObject -Server "${Domain}:3268" -SearchBase "" -LDAPFilter $ldapQuery -ResultSetSize $null -Properties $propertiesToLoad
} else {
$m = Get-ADObject -Server $Domain -LDAPFilter $ldapQuery -ResultSetSize $null -Properties $propertiesToLoad
}
$elapsed = [DateTime](Get-Date) - $tsStart
if ($m -eq $null) {
Write-Host "No objects need to be cleaned up."
retur
}
$cleanedCount = 0
$failedCount = 0
$filename = $("~\ArchiveDomainCleanup_{0:yyyymmdd_HHmmss}.csv" -f (Get-Date))
# Run cleanup and output data to CSV file
Write-Host "Writing output to $filename..."
try {
$m | %{
$success = $true
if ($Fix) {
$prevError = $error[0]
Set-ADObject -Identity $_ -Server $Domain -Clear "msExchArchiveAddress"
if ($error[0] -ne $prevError) {
$success = $false
Write-Host "x" -NoNewLine
} else {
Write-Host "." -NoNewLine
}
}
if ($success) {
$cleanedCount++
# object was cleaned up successfully, let's append it to output CSV.
$mm = $_ | Select ObjectGuid,DistinguishedName
# Morph guid values from binary blob to proper guid
$mbxGuid = [Guid]$_.msExchMailboxGuid
if ($_.msExchArchiveGuid -ne $null) {
$archiveGuid = [Guid]$_.msExchArchiveGuid
} else {
$archiveGuid = $null
}
Add-Member -InputObject $mm -MemberType NoteProperty -Name CleanedArchiveDomain -Value $($_.msExchArchiveAddress)
Add-Member -InputObject $mm -MemberType NoteProperty -Name ExchangeGuid -Value $mbxGuid
Add-Member -InputObject $mm -MemberType NoteProperty -Name Database -Value $(GetNameFromDN $_.homeMDB)
Add-Member -InputObject $mm -MemberType NoteProperty -Name ArchiveGuid -Value $archiveGuid
Add-Member -InputObject $mm -MemberType NoteProperty -Name ArchiveDatabase -Value $(GetNameFromDN $_.msExchArchiveDatabaseLink)
$mm
} else {
$failedCount++
}
} | Export-CSV $filename -NoTypeInformatio
}
finally {
if ($Fix) {
Write-Host ""
Write-Host "Cleaned up $cleanedCount recipients."
if ($failedCount -gt 0) {
Write-Warning "Failed to update $failedCount recipients."
}
} else {
Write-Host "Discovered $cleanedCount recipients."
}
}
  1. [ファイル] メニューで [保存] をクリックします。
  2. [名前を付けて保存の種類] ボックスで、[すべてのファイル (.)] をクリックします。
  3. [ ファイル名 ] ボックスに typeCleanup-ArchiveDomain.ps1 し、[ 保存] をクリックします。
  4. Cleanup-ArchiveDomain.ps1 ファイルを保存したディレクトリを探し、次のパラメーターと共にスクリプトを実行します。
Cleanup-ArchiveDomain.ps1 [-TenantCloudDomain serviceDomain] [-Domain domain] [-Fix] [-FindAllUsersInForest]

注:

  • TenantCloudDomain パラメーターは、テナントがクラウド アーカイブ機能を使用している場合にのみ指定する必要があります。 パラメーターの値は、 contoso.com などのクラウド アーカイブへのアクセスにテナントが使用する DNS ドメイン名である必要があります。
  • Domain パラメーターは、現在のコンピューターのドメインではないドメインでクリーンアップ機能を実行するために使用されます。
  • [修正] スイッチは、実際のクリーンアップ機能をトリガーします。 スイッチの既定の関数 ("スキャン モード" とも呼ばれます) は、ユーザーを見つけて CSV ファイルに出力するだけです。
  • FindAllUsersInForest スイッチは、グローバル カタログを検索し、影響を受けるすべてのユーザーをローカル フォレスト (すべてのドメイン間) で検索します。 ただし、このスイッチを Fix スイッチと組み合わせることはできません。 一度に修正できるドメインは 1 つだけです。

詳細

さらにヘルプが必要ですか? Microsoft コミュニティを参照してください。