Автоматизация процесса экспорта почтовых ящиков в 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
Понравилась или оказалась полезной статья, поблагодари автора
Обсуждение
Нет комментариев.