Exchange Server Veritabanı Yedeklerinin Powershell ile Kontrol Edilmesi
  1. Anasayfa
  2. Microsoft Exchange Server

Exchange Server Veritabanı Yedeklerinin Powershell ile Kontrol Edilmesi

Merhabakari bu makalemde Exchange Server veritabani yedeklerini raporlanması için Exchange Server 2010 ve sonrası sürümlerde çalıştırabileceğiniz PowerShell komutlarına değineceğiz.

İlk olarak, posta kutusu veritabanları için Get-MailboxDatabase cmdlet’i veya public folder veritabanları için Get-PublicFolderDatabase kullanılarak yedekleme zaman bilgilerine erişebiliriz.

Get-MailboxDatabase -Status | ft name,last*

Yukarıdaki komut çıktısında Exchange Server üzerindeki bütün veritabanlarından yedeklendiğini görebilirsiniz.

Exchange Server üzerinde hem mailbox hem de public folder veritabanlarının yedeklerini kontol etmek için aşağıdaki powershell komutunu kullanabilirsiniz.

$dbs = Get-MailboxDatabase -Status
$dbs = $dbs += Get-PublicFolderDatabase -Status
$dbs | ft name,last*

Aşağıdaki komutu çalıştırmak ve bu komut çıkıtısını her gün takip etmek basit bir iş olabilir, ancak bu komut çıktısı, veritabanı yedeklerini kontrol etmenin en verimli yolu olmayacaktır.

Exchange Server üzerindeki yedeklemesi yapılan veri tabanlarının son yedekleme sürelerini görüntülemek için aşağıdaki komutu çalıştırmanız yeterli olacaktır.

$server = $env:computername
 
$now = [DateTime]::Now
 
"Server: " + $server
"Current time: " + $now
 
$db = get-MailboxDatabase -server $server -status
foreach ($objItem in $db)
{
$lastfull = $objItem.lastfullbackup
	if (!$lastfull)
	{
		$fullago = "n/a"
	}
	else
	{
		$fullago = $now - $lastfull
		$fullago = $fullago.TotalHours
		$fullago = "{0:N0}" -f $fullago
	}
 
	$lastinc = $objItem.lastincrementalbackup
	if (!$lastinc)
	{
		$incago = "n/a"
	}
	else
	{
		$incago = $now - $lastinc
		$incago = $incago.TotalHours
		$incago = "{0:N0}" -f $incago
	}
 
 
$returnedObj = new-object PSObject
$returnedObj | add-member NoteProperty -name "Database" -value $objItem.Name
$returnedObj | add-member NoteProperty -name "Last Full (hrs ago)" -value $fullago
$returnedObj | Add-Member NoteProperty -name "Last Inc (hrs ago)" -value $incago
$returnedObj
}

Exchange Server üzerindeki veritabanlarının üzerindeki kullanıcı sayısı, Full ve Incremental yedekleme bilgileri ve database boyutlarının basit bir rapor ile iletilmesi için aşağıdaki script içeriğini “.ps1” uzantısı ile kaydedip çalıştırabilirsiniz.

# Where to store output
$savefile  = $env:USERPROFILE + ‘\Desktop\’ +((Get-Date).ToString(“dd_MM_yyyy_HHmm”))+’.html’

#Preformat HTML document
$a = “<style>”
$a = $a + “BODY{background-color:peachpuff;}”
$a = $a + “TABLE{border-width: 1px;border-style: solid;border-color: black;border-collapse: collapse;}”
$a = $a + “TH{border-width: 1px;text-align: center; margin: 2px;padding: 0px;border-style: solid;border-color: black;background-color:thistle}”
$a = $a + “TD{border-width: 1px;text-align: center; margin: 2px;padding: 0px;border-style: solid;border-color: black;background-color:PaleGoldenrod}”
$a = $a + “</style>”

# Function to for the Output

$Output = Get-MailboxDatabase -status | Select Name,@{Name=”NumberofUsers”;Expression={(Get-Mailbox -resultsize unlimited -Database $_.name).Count}},LastIncrementalBackup,LastFullBackup,Databasesize | ConvertTo-Html -head $a -body “<H2> Mailbox Count & Database Size Status</H2>”

$Report = $Output |Out-File $savefile

# this will open report in your default browser.
#Invoke-Item  $savefile

#To Send Email

$MailTo = “kadir@kadirkozan.com.tr”
$MailFrom = “exchange-admins@kadirkozan.com.tr”
$MailServer = “mail.kadirkozan.com.tr”

Send-MailMessage -Attachments $savefile -To $MailTo -From $MailFrom -Subject “Exchange Server Database Size and Backup Status Report” -Body ( $Output | out-string ) -bodyashtml -SmtpServer $MailServer

bu dosyayı görev programına eklemek için aşağıdaki komutu kopyalayın ve yeni görev komutuna yapıştırınız.

C:\Windows\System32\WindowsPowerShell\v1.0\Powershell.exe -Command “.’E:\Program Files\Microsoft\Exchange Server\V15\Bin\RemoteExchange.ps1′; Connect-ExchangeServer -auto; C:\Scripts\DBSizer_Reports.ps1