Автоматизация процесса экспорта почтовых ящиков в MS Exchange Server 2010 SP3, с помощью скрипта для PowerShell.

В этой статье я рассматривал как выполнить единичный запрос на экспорт почтового ящика посредством Exchange Managment Shell. Сейчас же появилась необходимость в инструменте, для массового экспорта указанных почтовых ящиков в автоматическом режиме.

 

Решать данную задачу будем с помощью скрипта для Powershell. Задача скрипта:

  • Возможность выполнять одиночный экспорт указанного почтового ящика
  • Возможность выполнять массовый экспорт, указанных почтовых ящиков

 

По-умолчанию в PowerShell включена максимальная политика безопасности, которая позволяет выполнять команды PowerShell в командной строке, но не позволяет в той же командной строке выполнить скрипт с командами PowerShell. Разрешить выполнение скриптов в Powershell:

powershell -Command Set-ExecutionPolicy RemoteSigned

Ниже представлен листинг получившегося у меня скрипта. Скрипт с комментариями, разобраться в нем не должно составить труда:

# Путь к каталогу сохранения .pst файла
$filepath = "\\192.168.1.2\backup\Mailboxes"
# Путь к файлу с именами почтовых ящиков
$list_mailboxes = "C:\list_mailboxes.txt"

# Инициализация меню
Write-Host "Menu"
Write-Host

Write-Host "1. Single Export"
Write-Host "2. Export by list (list_mailboxes.txt)"
Write-Host "3. Exit"

# Запрашиваем сделать выбор действия
$choice = Read-Host "Select the menu item"

# Функция экспорта заданного почтового ящика 
Function SingleExport () {
$mailbox_name = Read-Host "Enter mailbox name"
New-MailboxExportRequest -Mailbox $mailbox_name -FilePath "$Filepath\$mailbox_name.pst"
do {
Get-MailboxExportRequest | Select Status | ForEach-Object {
$status = $_.Status
}
} until ($status -eq "Completed")
Write-Host Export mailbox ($mailbox_name) - $status
Get-MailboxExportRequest -Status Completed | Remove-MailboxExportRequest -Confirm:$false
}

# Функция экспорта почтовых ящиков из списка
Function MultipleExport (){
foreach ($line in Get-Content $list_mailboxes) {
New-MailboxExportRequest -Mailbox $line -FilePath "$Filepath\$line.pst"
do {
Get-MailboxExportRequest | Get-MailboxExportRequestStatistics | Select Status,PercentComplete | ForEach-Object {
$status = $_.Status
}
} until ($status -eq "Completed")
Write-Host Export mailbox ($line) - $status
}
Get-MailboxExportRequest -Status Completed | Remove-MailboxExportRequest -Confirm:$false
}

# Действия согласно пользовательскому выбору
Switch ($choice) {
1 {SingleExport}
2 {MultipleExport}
3 {Write-Host "Exit..."; exit}
default {Write-Host "Wrong choice, try again."}
}

Не забываем создать в корне диска C, текстовый файл list_mailboxes.txt, в который заносим почтовые адреса, которые необходимо экспортировать. По адресу на каждую строку, прим.:

mail1
mail2

 

Понравилась или оказалась полезной статья, поблагодари автора

 

БесполезноСлабоватоПриемлемоОтличноПревосходно (Еще нет оценок)
Загрузка...

Оставить ответ

14 − 1 =