Exchange Veritabanınızı En İyi Şekilde Olacak Şekilde Yönetmek


Microsoft Exchange ortamından sorumlu herhangi bir sistem yöneticisinin büyük olasılıkla bir noktada Exchange veritabanlarını yönetmesi gerekecektir. Yöneticiler bunu gerçekleştirmek için Exchange Admin Center'ı kullanmak yerine Get-MailboxDatabase, New-MailboxRepairRequest ve Move-DatabasePath PowerShell cmdlet'lerini kullanabilir.

Normal işlemler sırasında genellikle EDB dosyaları hakkında endişelenmenize gerek yoktur. Exchange'in işleyişinin ayrılmaz bir parçası olmalarına rağmen günlük işlemler genellikle veritabanlarını doğrudan içermez. Yukarıda belirtildiği gibi, daha doğrudan müdahale gerektirebilecek bir dizi senaryo vardır.

Exchange Yönetim Araçları tarafından sağlanan, Exchange'i yönetmek için bir PowerShell modülü mevcuttur. Büyük olasılıkla bu araçlar, aşağıdaki talimatlarda mevcut olduğu gibi Exchange Sunucunuza yüklenecektir.

Kendinizi içinde bulabileceğiniz bazı ilginç senaryolara bakalım.

Exchange Yönetimi PowerShell'i Yükleme

Bu cmdlet'lerden bazılarının yalnızca şirket içi Exchange için kullanılabildiğini unutmayın.

Modülün kullanımına genel olarak önerilen yaklaşım, Exchange Sunucusuna uzaktan bağlanmak ve Exchange cmdlet'lerini aşağıda gösterildiği gibi yüklemek için bir PowerShell Uzaktan İletişim oturumu aracılığıyladır.

PS> Set-ExecutionPolicy RemoteSigned
PS> $UserCredential = Get-Credential
PS> $Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri http://<ServerFQDN>/PowerShell/ -Authentication Kerberos -Credential $UserCredential
PS> Import-PSSession $Session -DisableNameChecking

İşiniz bittiğinde PowerShell oturumunuzdan bağlantıyı şu komutla kaldırdığınızdan emin olun: Remove-PSSession $Session.

EDB Dosyalarının Varsayılan Konumları

Exchange'in her sürümü, EDB dosyalarını biraz farklı bir konuma yerleştirir. Aşağıda varsayılan konumları göreceksiniz. Bu dosyalarla doğrudan etkileşimde bulunurken bu kullanışlı olabilir, ancak mevcut PowerShell komutları sayesinde buna gerek kalmayabilir!

  • Exchange Server 2010
    C:\Program Files\Microsoft\Exchange Server\V14\Posta Kutusu Veritabanı\
  • Exchange Server 2013
    C:\Program Files\Microsoft\Exchange Server\V15\Mailbox\Mailbox Veritabanı Adı\
  • Exchange Server 2016 ve 2019
    C:\Program Files\Microsoft\Exchange Server\V15\Mailbox\

Get-MailboxDatabase ile Posta Kutularını Bulma

Genellikle belirli bir posta kutusu veritabanının nerede bulunduğunu veya mevcut birçok özellikten herhangi birini bilmeniz yeterlidir. Aşağıda görüldüğü gibi bir Exchange veritabanı hakkında birçok yararlı bilgi bulmak için Get-MailboxDatabase cmdlet'ini kullanabilirsiniz.

Döndürülen birçok özellik olmasına rağmen biz sadece Ad, EdbFilePath ve bunun Montajlı durumuyla ilgileniyoruz. Gerçek bağlı değeri almak için Durum parametresini kullanın, aksi takdirde hiçbir değer üretilmez.

Aşağıda Get-MailboxDatabase cmdlet'inin ürettiği bir örneği görebilirsiniz.

PS> Get-MailboxDatabase -Name MyExchangeDatabase -Status | Select-Object Name, EdbFilePath, Mounted | Format-List

Name        : MyExchangeDatabase
EdbFilePath : C:\Program Files\Microsoft\Exchange Server\V15\Mailbox\Mailbox Database 1000001111.edb
Mounted     : True
--snip--

Dismount-Database ile Exchange Veritabanlarını Kaldırma

Artık Get-MailboxDatabase ile posta kutusu veritabanınız hakkında bazı bilgilere sahip olduğunuza göre, veritabanını kaldırmayı seçebilirsiniz. Bunu yapmak için Dismount-Database cmdlet'ini kullanın.

EDB dosyalarının bulunduğu varsayılan dizin ideal değildir. Bunları taşımak için daha iyi performans gösteren ve daha yönetilebilir bir konumunuz olabilir. Ancak bunu yapmadan önce, aşağıda gösterildiği gibi veritabanını kaldırmalısınız.

PS> Get-MailboxDatabase -Name "MyExchangeDatabase" | Dismount-Database -Confirm:$False
PS> Get-MailboxDatabase -Name "MyExchangeDatabase" -Status | Select-Object Name, Mounted | Format-List

Name    : MyExchangeDatabase
Mounted : False
--snip--

Move-DatabasePath ile Posta Kutusu Veritabanlarını Taşıma

Veritabanını kaldırdığınız için şimdi posta kutusu veritabanını yeni bir konuma taşıyın. Bu, uygun şekilde adlandırılmış Move-DatabasePath cmdlet'i kullanılarak yapılır.

Beklemek! Peki ya Get-Mailboxdatabase'i çalıştırıp döngüsel günlük kaydının açık olduğunu tespit edersek? Veritabanı dosyalarını taşımaya yönelik en iyi uygulamalara göre bunun kapatılması gerekir. Bunu yapmak için Set-MailboxDatabase cmdlet'ini kullanın.

PS> Set-MailboxDatabase -Name MyExchangeDatabase -CircularLoggingEnabled:$False

Ortamımıza bağlı olarak, bunu yapmadan önce atılması gereken bazı ekstra adımlar olabilir. Özellikle mevcut posta kutusu veritabanı kopyalarını kaldırmanız gerekebilir. Posta kutusu veritabanı kopyaları, Exchange sunucularınız arasında dağıtılan ve çoğaltılan bir veritabanının kopyalarıdır. Endişelenmeyin, onları burada kaldırıyor olsak bile geri ekleyeceğiz!

PS> Remove-MailboxDatabaseCopy -Identity MyExchangeDatabase -Confirm:$False

Artık veritabanını yeni konuma taşıyabilmeniz gerekir. Move-DatabasePath'in çalıştırılması, veritabanının bağlantısının kesilmesi koşuluyla aslında veritabanı dosyalarını yeni bir yola taşıyacaktır.

PS> Move-DatabasePath -Identity MyExchangeDatabase -EdbFilePath C:\EDB\MyExchangeDatabase.edb

Başarı! Veritabanları taşındı, şimdi veritabanı kopyalarını geri ekleyin ve ayrıca aşağıda gösterildiği gibi döngüsel günlük kaydını tekrar açın.

PS> Add-MailboxDatabaseCopy -Identity MyExchangeDatabase
PS> Set-MailboxDatabase -Name MyExchangeDatabase -CircularLoggingEnabled:$True

Bozuk Posta Kutularını New-MailboxRepairRequest ile Düzeltme

Veritabanı taşındıktan sonra belki de veritabanında bozuk posta kutusu olmadığından emin olmak istersiniz. Bunun için New-MailboxRepairRequest adlı bir komut olması kullanışlıdır. Bu komut, aşağıda gösterildiği gibi tek bir posta kutusunda veya parametresiz çalıştırılırsa belirli bir veritabanındaki tüm posta kutularında çalıştırılabilir.

PS> New-MailboxRepairRequest -Database MyExchangeDatabase

Önemli! Onarım isteğini başlattıktan sonra işlemi durdurmak için veritabanının bağlantısını kesmeniz gerekir. Ayrıca, yalnızca onarılan posta kutusuna erişilemez, diğerlerinin tümü veritabanı onarımı sırasında erişilebilir kalır.

PowerShell ve ESEUTIL'i Birlikte Yapıştırma

PowerShell'in güçlü özelliklerinden biri, birçok farklı aracı birbirine yapıştırabilme yeteneğidir. Birçok Exchange Yöneticisinin başvuracağı yardımcı program eseutil.exe'dir.

Belki bir EDB dosyasını birleştirmek istersiniz. Birleştirme eseutil aracılığıyla yapılabilir. Bunun bir örneği, PowerShell'i standart kabuk yardımcı programlarıyla birleştirmeyi gösteren aşağıdaki komut dosyasıdır.

PS> Set-Location -Path (Split-Path (Get-MailboxDatabase -Name MyExchangeDatabase).EdbFilePath)
PS> Dismount-Database -Name MyExchangeDatabase
PS> eseutil /d MyExchangeDatabase.edb /
PS> Mount-Database -Name MyExchangeDatabase

Bir veritabanında birleştirme işlemini başlattığınızda kullanıcılarınızın o veritabanında depolanan posta kutularına erişemeyeceğini unutmayın. Ayrıca birleştirme işlemini gerçekleştirmek için diskteki veritabanı boyutunun yaklaşık yüzde 110'una ihtiyacınız olacaktır.

Çözüm

İşlemlerin çoğunu Exchange Yönetim Merkezi aracılığıyla yapabilmenize rağmen, yönetime yönelik en iyi uygulamalardan biri otomasyon ve tekrarlanabilirliktir. PowerShell'den yararlanarak, birçok yaygın senaryoyu otomatikleştirerek ortak yönetici tekrarlarını sınırlandırabilir, sonuç olarak zamandan tasarruf edebilir ve baş ağrılarını önleyebilirsiniz!