TMG 2010 — Резервное копирование Array Configuration с PowerShell

imageОзадачившись вопросом автоматизации регулярного выполнения резервного копирования настроек Forefront TMG 2010 нашёл ряд интересных материалов, в том числе статью, описывающую процедуру настройки взаимодействия DPM сервера и DPM агента, установленного на сервере TMG — The Microsoft MVP Award Program Blog > How DPM 2010 Could Protect Forefront TMG 2010 with a Minimum Opening of Feeds. Учитывая то что в моём случае сервера TMG являются виртуальными и периодически подвергаются резервному копированию в виде VM на сервер DPM, нет особого смысла в установке агента DPM непосредственно внутрь этих виртуальных машин. Поэтому я решил ограничиться созданием на регулярной основе резервных копий конфигурации массива TMG. Из консоли TMG эта процедура вызывается из меню действий или контекстного меню на конкретном массиве – Export (Back Up)

 

image

Мастер сохранения конфигурации довольно прост и в моём примере используется с включенными настройками сохранения опциональной информации о введённых в TMG учетных данных и настроек безопасности.

image

После изучения примеров автоматизации этой процедуры экспорта настроек и некоторых экспериментов получился PowerShell скрипт, который регулярно запускается на одном из TMG серверов, являющихся членом массива и сохраняет с аналогичными настройками безопасности данные конфигурации на файловый сервер. Если в процессе выполнения экспорта происходит ошибка – скрипт отсылает администратору письмо-уведомление. Дополнительно скрипт отслеживает наличие устаревших файлов экспорта и удаляет их.  

# Блок переменных для экспорта

# $gvExportDir — Путь к каталогу на файловом сервере в котором будут создаваться экспортируемые файлы

# $gvExportOptData — Константа определяющая опции экспорта. Подробнее http://msdn.microsoft.com/en-us/library/ms826700.aspx

# $gvPassword — Пароль для криптования информации об учетных данных, сохранённых в TMG

#

$gvExportDir = "\FSTMG-Array-Config$"

$gvExportOptData = 15

$gvPassword = "12345678"

#

# Блок переменных для уведомлений по электронной почте в случае проблем экспорта

# $gvEmailFrom — Email адрес отправителя

# $gvEmailTo — Email адрес получателя (например адрес группы рассылки для Администраторов TMG)

# $gvSMTPServer — FQDN имя почтового сервера

#

$gvEmailFrom = "TMG-Config-Backup@holding.com"

$gvEmailTo = "DST-TMG-Administrators@holding.com"

$gvSMTPServer = "Mail.holding.com"

#

# Блок переменных для удаления устаревших файлов экспорта

# $gvDelOldFiles — Признак необходимости удаления устаревших файлов

# $gvDelPeriod — Период хранения файлов экспорта в днях.

#

$gvDelOldFiles = $True

$gvDelPeriod = 10

#

# Блок экспорта конфигураций всех обнаруженных массивов TMG

#

$vFPC = New-Object -comObject FPC.root

$vArrays = $vFPC.Arrays

Foreach ($vArray in $vArrays)

{

      write-host "Find array:" $vArray.Name

      $vDate = Get-Date -uformat "%Y_%m_%d_%H_%M_%S"

      $vFName = $vArray.Name + "_" + $vDate + ".xml"

      $vFPath = $gvExportDir + "" + $vFName

      $vComment = "Exported by PowerShell"

      write-host "Export configuration for array:" $vArray.Name

      write-host "Path:" $vFPath

      $vArray.ExportToFile($vFPath, $gvExportOptData, $gvPassword, $vComment)

      If ($Error){

            write-host "Export failed, send e-mail to Administrators…"

            $vEmailSubj = "Error exporting TMG Configuration"

            $vEmailBody = "<font face=’Tahoma’ color=’#000000′ size=’2′>Error exporting configuration for array: </font>" + `

        "<font face=’Tahoma’ color=’#0000A0′ size=’2′><strong>" + `

        $vArray.Name + "</strong></font></br></br>"  + `

        "<font face=’Tahoma’ color=’#000000′ size=’2′>File for exporting: </font>" + `

        "<font face=’Tahoma’ color=’#A52A2A’ size=’2′>" + `

        $vFPath + "</font></br></br>"  + `

        "<font face=’Tahoma’ color=’#000000′ size=’2′>Error data: </font>" + `

        "<font face=’Tahoma’ color=’#800000′ size=’2′>" + `

          $Error + "</font>"

                       

            $vSMTP = New-Object Net.Mail.SMTPClient($gvSMTPServer)

        $vMsg = New-Object Net.Mail.MailMessage($gvEmailFrom, $gvEmailTo, $vEmailSubj, $vEmailBody)

        $vMsg.IsBodyHTML = $True

            $vSMTP.Send($vMsg)   

            }

      Else{

            write-host "Export Succeeded"}

}

#

# Блок удаления устаревших экспортных файлов

#

If ($gvDelOldFiles = $True)

{

    Filter Get-OldFiles

    {

        if(([DateTime]::Now.Subtract($_.CreationTime)).Days -gt $gvDelPeriod)

        {return $_ }

    }

    dir -path $gvExportDir | Get-OldFiles -Period $gvDelPeriod | Remove-Item -force

}

На сервере TMG в планировщике задач создана задача, которая через определённые интервалы времени запускает PowerShell и выполняет данный скрипт.

Триггер выполнения при желании можно сделать не на периодической основе а например привязать к событию перезапуска служб TMG и таким образом получить автоматическое сохранение резервной копии конфигурации после каждого её более или менее серьёзного изменения.

image

 

В моём примере данная задача выполняется от имени системы с высоким уровнем привилегий

image

И в силу того что попытка записи создаваемого файла экспортированной конфигурации будет выполняться в контексте SYSTEM сервера TMG, на файловом сервере в свойствах соответствующего сетевого каталога нужно выставить разрешения для учетной записи компьютера – сервера TMG

image

Ну и разумеется нужно не забыть добавить данное разрешение на уровне NTFS

image

После этого, настроенное нами задание должно заработать и дать желаемый результат.

image

Источники информации:

  • Blog FixMyITSystem — TMG configuration backup automation — Part II
  • Всего комментариев: 2 Комментировать

    1. Обратная ссылка: Useful ISA 2006 / TMG 2010 links « Share IT /

    2. mitushinem /

      Очень полезная штука. Проверил. Очень доволен. Спасибо!!!

    Добавить комментарий