Bu yazımda sizlerle Exchange 2010 Sp1 üzerinde mailbox Export – Import işlemlerini paylaşacağım. Neden mailbox’ları export – import etmeye ihtiyaç duyarız. Basit bir örnek vermek gerekirse, acil durumlarda backup, restore vb. işlemler için bu işlemden yararlanabiliriz.
·         Kullanıcı mailbox’ını başka bir sunucuya migrate etmek için’de bu yöntem kullanılabilir.
·         Mevcut posta kutularında oluşan sorunlarda kullanabiliriz.
·         Mailbox Database’de oluşan hatalar’da bu işlemden yararlanabiliriz.
·         Ve üstte’de belirttiğim gibi Manual Yedekleme olarak’da tercih edebiliriz.
Bu işlemleri yapabilmemiz için aşağıda belirttiğim Prerequisites’lerin hazır olması gerekmektedir.
·         Windows 2008 r2 (önerilir) x64 işletim sistemi
·         PowerShell 2.0
·         .NetFramework 3.5.1
·         Microsoft Outlook 2010 x64
·         Exchange 2010 Management Tools
·         Sunucu üzerinde Administrator yetkisinde bir user
Yukarıda belirttiğim hususlar hazır ise işlemlerimize başlıyoruz.
C:\ altında Exports adında bir klasör oluşturdum. Security sekmesinden  Exchange Trusted Subsystem read/write permission yetkisi verdim ve share ettim.
İlk önce aşağıda ki komut’u Exchange Management Shell üzerinde çalıştırmamız gerekmektedir.
Bu komut ise Export – Import yapılaması istenen mailbox’lara izin verir.
New-ManagementRoleAssignment –Role “Mailbox Import Export” –User ufuk.tatlidil
image001
Şimdi Export işlemine başlayalım.
Komutumuz;
New-MailboxExportRequest -Mailbox ufuk.tatlidil -FilePath \\dc\Exports\ufuk.tatlidil.pst
image002
C:\ altında ki Exports klasörümüze bakalım.  .pst dosyamış oluşmuş mu diye..
image003
Get-MailboxExportRequest | Get-MailboxExportRequestStatistics
image004
Başarılı bir şekilde pst’mizi export ettik.
Yukarıda belirttiğim komutları PowerShell ‘de çalıştırırsanız, Shell ortamında Export-Import işlemlerini yapabilirsiniz.
Aynı işlemleri ECM altında Recipient Configuration – Mailbox ‘da bulunan user’ın üzerinde’de yapabilirsiniz.
image005
image006
image007
Bir script yardımı ile bu işlemi’de gerçekleştirebilirsiniz.
# Exchange 2010 SP1 Mailbox Export Script
###############
# Settings    #
###############
# Pick ONE of the two below. If you choose both, it will use $Server.
$Server = “server”
$Database = “”
# Share to export mailboxes to. Needs R/W by Exchange Trusted Subsystem
# Must be a UNC path as this is run by the CAS MRS service.
$ExportShare = “\\server\share”
# After each run a report of the exports can be dropped into the directory specified below. (The user that runs this script needs access to this share)
# Must be a UNC path or the full path of a local directory.
$ReportShare = “\\server\share”
# Shall we remove the PST file, if it exists beforehand? (The user that runs this script needs access to the $ExportShare share)
# Valid values: $true or $false
$RemovePSTBeforeExport = $false
###############
# Code        #
###############
if ($Server)
{
if (!(Get-ExchangeServer $Server -ErrorAction SilentlyContinue))
{
throw “Exchange Server $Server not found”;
}
if (!(Get-MailboxDatabase -Server $Server -ErrorAction SilentlyContinue))
{
throw “Exchange Server $Server does not have mailbox databases”;
}
$Mailboxes = Get-Mailbox -Server $Server -ResultSize Unlimited
} elseif ($Database) {
if (!(Get-MailboxDatabase $Database -ErrorAction SilentlyContinue))
{
throw “Mailbox database $Database not found”
}
$Mailboxes = Get-Mailbox -Database $Database
}
if (!$Mailboxes)
{
throw “No mailboxes found on $Server”
}
if (!$Mailboxes.Count)
{
throw “This script does not support a single mailbox export.”
}
# Pre-checks done
# Make batch name
$date=Get-Date
$BatchName = “Export_$($date.Year)-$($date.Month)-$($date.Day)_$($date.Hour)-$($date.Minute)-$($date.Second)”
Write-Output “Queuing $($Mailboxes.Count) mailboxes as batch ‘$($BatchName)’”
# Queue all mailbox export requests
foreach ($Mailbox in $Mailboxes)
{
if ($RemovePSTBeforeExport -eq $true -and (Get-Item “$($ExportShare)\$($Mailbox.Alias).PST” -ErrorAction SilentlyContinue))
{
Remove-Item “$($ExportShare)\$($Mailbox.Alias).PST” -Confirm:$false
}
New-MailboxExportRequest -BatchName $BatchName -Mailbox $Mailbox.Alias -FilePath “$($ExportShare)\$($Mailbox.Alias).PST”
}
Write-Output “Waiting for batch to complete”
# Wait for mailbox export requests to complete
while ((Get-MailboxExportRequest -BatchName $BatchName | Where {$_.Status -eq “Queued” -or $_.Status -eq “InProgress”}))
{
sleep 60
}
# Write reports if required
if ($ReportShare)
{
Write-Output “Writing reports to $($ReportShare)”
$Completed = Get-MailboxExportRequest -BatchName $BatchName | Where {$_.Status -eq “Completed”} | Get-MailboxExportRequestStatistics | Format-List
if ($Completed)
{
$Completed | Out-File -FilePath “$($ReportShare)\$($BatchName)_Completed.txt”
}
$Incomplete = Get-MailboxExportRequest -BatchName $BatchName | Where {$_.Status -ne “Completed”} | Get-MailboxExportRequestStatistics | Format-List
if ($Incomplete)
{
$Incomplete | Out-File -FilePath “$($ReportShare)\$($BatchName)_Incomplete_Report.txt”
}
}
# Remove Requests
Write-Output “Removing requests created as part of batch ‘$($BatchName)’”
Get-MailboxExportRequest -BatchName $BatchName | Remove-MailboxExportRequest -Confirm:$false
Bu işlemlerden sonra export ettiğiniz pst dosyasını başka bir Ms Outlook’a import edebilir veya backup olarak tutabilirsiniz.