Автоматизация процесса экспорта почтовых ящиков в MS Exchange Server 2010 SP3, с помощью скрипта для PowerShell.
В этой статье я рассматривал как выполнить единичный запрос на экспорт почтового ящика посредством Exchange Managment Shell. Сейчас же появилась необходимость в инструменте, для массового экспорта указанных почтовых ящиков в автоматическом режиме.
Решать данную задачу будем с помощью скрипта для Powershell. Задача скрипта:
- Возможность выполнять одиночный экспорт указанного почтового ящика
- Возможность выполнять массовый экспорт, указанных почтовых ящиков
[stextbox id=’warning’]По-умолчанию в PowerShell включена максимальная политика безопасности, которая позволяет выполнять команды PowerShell в командной строке, но не позволяет в той же командной строке выполнить скрипт с командами PowerShell. Разрешить выполнение скриптов в Powershell:
powershell -Command Set-ExecutionPolicy RemoteSigned[/stextbox]
Ниже представлен листинг получившегося у меня скрипта. Скрипт с комментариями, разобраться в нем не должно составить труда:
# Путь к каталогу сохранения .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
Понравилась или оказалась полезной статья, поблагодари автора
ПОНРАВИЛАСЬ ИЛИ ОКАЗАЛАСЬ ПОЛЕЗНОЙ СТАТЬЯ, ПОДДЕРЖИ АВТОРА ДОНАТОМ
Обсуждение
Нет комментариев.