Microsoft 365로 또는 Microsoft 365로 마이그레이션된 사서함에 대한 사서함 보관 문제
원래 KB 번호: 2757430
문제
Microsoft 365로 또는 Microsoft 365에서 사서함을 마이그레이션하고 보관 사서함을 사용하는 경우 마이그레이션이 끝날 때 사서함의 ArchiveDomain 속성의 대상 도메인 값에 스탬프를 Microsoft Exchange Online 있는 MRS(Microsoft Exchange 사서함 복제 서비스)가 스탬프를 찍는 문제가 발생합니다.
참고
보관 사서함이 없는 계정에서는 문제가 발생하지 않아야 합니다.
보관 사서함과 관련된 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 cmdlet을 사용하여 보관 속성을 보는 경우 보관 상태 활성입니다. 그러나 대부분의 보관 정보가 누락되었습니다.
Get-Mailbox alias |fl Name, Archive*
참고
온-프레미스 Exchange 관리 셸 또는 Exchange Online PowerShell을 사용하여 cmdlet을 실행할 수 있습니다. Exchange Online PowerShell을 사용하는 방법에 대한 자세한 내용은 서비스에 Windows PowerShell 연결을 참조하세요.
cmdlet을 실행하면 결과는 다음과 유사합니다.
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
해결 방법
이 문제를 resolve 시나리오에 적합한 다음 방법 중 하나를 사용합니다.
시나리오 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는 이 시나리오를 resolve 업데이트를 배포했습니다. 따라서 향후 오프보딩은 영향을 받지 않습니다.
Exchange Online 오프보딩 마이그레이션을 수행할 때 영향을 받는지 여부를 확인하려면 스캔 모드의 '시나리오 5 해결' 섹션에 제공된 스크립트를 실행합니다.
시나리오 5
이 시나리오에서는 ArchiveDomain 속성의 값이 온-프레미스 도메인으로 설정됩니다. 따라서 Outlook에서 보관 사서함을 찾아 열 수 없습니다.
시나리오 4와 5를 resolve 위해 Microsoft는 사서함을 Exchange Online 온-프레미스 Exchange Server 환경으로 다시 이동하는 경우 필요한 특성을 자동으로 변경하는 데 도움이 되는 다음 스크립트를 제공합니다. 스크립트를 실행하려면 다음 단계를 수행합니다.
- 메모장을 시작합니다.
- 다음 스크립트를 복사하여 메모장에 붙여넣습니다.
#-------------------------------------------------------------------------------
#
# 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 domain
$computer = Get-WmiObject -Class Win32_ComputerSystem
$Domain = $computer.Domain
}
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."
return
}
$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."
}
}
- 파일 메뉴에서 저장을 클릭합니다.
- 다른 이름으로 저장 형식 상자에서 모든 파일(.)을 클릭합니다.
- 파일 이름 상자에서 typeCleanup-ArchiveDomain.ps1 저장을 클릭합니다.
- Cleanup-ArchiveDomain.ps1 파일을 저장한 디렉터리를 찾은 다음 다음 매개 변수와 함께 스크립트를 실행합니다.
Cleanup-ArchiveDomain.ps1 [-TenantCloudDomain serviceDomain] [-Domain domain] [-Fix] [-FindAllUsersInForest]
참고
- 테넌트가 클라우드 보관 기능을 사용하는 경우에만 TenantCloudDomain 매개 변수를 지정해야 합니다. 매개 변수의 값은 테넌트가 contoso.com 같은 클라우드 보관 파일에 액세스하는 데 사용하는 DNS 도메인 이름이어야 합니다.
- Domain 매개 변수는 현재 컴퓨터의 도메인이 아닌 도메인에서 정리 기능을 실행하는 데 사용됩니다.
- 수정 스위치는 실제 정리 기능을 트리거합니다. 스위치의 기본 함수('스캔 모드'라고도 함)는 사용자를 찾은 다음 CSV 파일에 출력하기 위한 것입니다.
- FindAllUsersInForest 스위치는 전역 카탈로그를 검색하고 모든 도메인에서 로컬 포리스트에서 영향을 받는 모든 사용자를 찾습니다. 그러나 이 스위치는 수정 스위치와 결합할 수 없습니다. 한 번에 하나의 도메인에서만 사용자를 수정할 수 있습니다.
추가 정보
아직 해결되지 않았습니까? Microsoft 커뮤니티로 이동하세요.