Как восстановить конфигурацию TMG если EMS недоступен / потерян и нет резервной копии конфигурации

Шабунин Антон, MCSE 2003, MCITP EA, MCT

26 июля 2012 v 1.0

Оглавление

Вести с переднего края. 1

Официальная позиция MS. 2

Исследование реестра. 3

Скрипт ChangeStorageServer.vbs. 6

Экспорт конфигурации из реестра в XML. 6

Импорт полученного из реестра XML на сервере EMS. 6

Что нужно сделать, чтобы XML из реестра импортировался на сервере EMS. 8

Если новый EMS имеет другое имя и ip-адрес. 9

Нормализация конфигурации. 9

Наладка резервного копирования. 9

Воссоздание корпоративных правил. 10

Смена идентификатора нового массива и синхронизация конфигурации. 11

Как проверить, что конфигурация с EMS синхронизируется на узлы массива. 12

Общий алгоритм восстановления конфигурации TMG, если нет бакапа. 13

Скрипт сохранения текущей конфигурации из реестра узла массива. 13

Скрипт экспорта текущей конфигурации из реестра узла массива в XML. 13

Скрипт импорта конфигурации в заданный массив. 14

 

Вести с переднего края

Один сервер Enterprise Management Server (EMS) TMG был установлен на виртуальной машине Vmware. Диски виртуальной машины лежали на системе хранения HP. После сбоя контроллера системы хранения, который повлёк за собой зануление физических дисков, файлы дисков виртуальной машины исчезли.

 

Конфигурация хранится в двух местах – на сервере EMS и в реестре каждого сервера массива.  При создании правила оно вначале создаётся в LDS, и уже оттуда распространяется в реестр серверов массива. Это значит, что если доступ к серверу EMS потерян, управлять серверами массива (в т.ч. создавать новые правила) нельзя.

Если бы бакап EMS был, то нужно было бы:

·        Установить новый сервер EMS

·        Восстановить  конфигурацию из XML или из бакапа экземпляра LDS (ldifde, csvde, dsdbutil)

·        Перенаправить узлы массивов TMG на новый EMS с помощью скрипта ChangeStorageServer.vbs (есть в дистрибутиве)

Однако, резервной копий конфигурации TMG нет. Старые резервные копии конфигурации серверов TMG до включения их в массивы (никаких правил и прочих настроек там нет) удалось найти, копии корпоративной конфигурации нет. Кроме того, в первоначальную конфигурацию были внесены изменения. Какие – никто не знает, т.к. в организации не ведётся управление изменениями. Таким образом, единственное место, где осталась текущая конфигурация TMG – это реестр работающих серверов TMG.

Официальная позиция MS

По официальным сведениям с блога команды разработки TMG:

·        Серверы TMG будут работать с текущей конфигурацией из реестра, даже если EMS недоступен (это радует);

·        Конфигурацию из реестра нельзя превратить в конфигурацию, пригодную для сервера EMS (это не радует);

·        Если у вас один сервер EMS, в случае его сбоя если нет резервной копии конфигурации придётся переустанавливать ВСЁ! (это совсем не радует).

What it all boils down to:

2. ISA Enterprise Edition can still perform as a firewall/proxy using the last known good policy in the registry even if CSS is not available. Only if this system-local copy fails to initialize properly will the firewall service enter lockdown for policy load failure

3. You cannot reverse-engineer the registry-based Enterprise Edition policies to CSS-format storage

5. If you deploy a single CSS for your Enterprise firewall solution, you’re risking a complete Enterprise rebuild when (not if) that CSS fails.

http://blogs.technet.com/b/isablog/archive/2008/10/29/isa-policy-storage-101.aspx
http://blogs.technet.com/b/mbaher/archive/2010/09/04/tmg-specific-limitations-considerations-and-requirements.aspx

То есть, если EMS сервер сломался и бакапа нет (это как раз наш случай), MS предлагает нам следующее:

1.      Установить новый сервер EMS

2.      Создать новую конфигурацию предприятия

3.      Создать массив(ы) (их всего 5)

4.      Удалить TMG на существующих узлах массива (их всего 10), переустановить TMG

5.      Включить узлы в массивы

6.      Воссоздать  правила политики массивов и политики предприятия и другие настройки

Первые 5 пунктов в принципе выполнимы, однако с 6 пунктом проблема, т.к. никто не помнит какие правила и настройки там были. Эта проблема в принципе разрешима, т.к. текущая конфигурация всё-таки хранится в реестре, и покопавшись там возможно воссоздать нужные объекты и правила.

Однако, с помощью некоторых исследований:

·        Конфигурацию из реестра можно превратить в конфигурацию, пригодную для сервера EMS (это радует);

·        Если у вас один сервер EMS, в случае его сбоя если нет резервной копии конфигурации не придётся переустанавливать всё (это очень радует).

Результаты исследований описаны ниже.

Исследование реестра

В статье isa-policy-storage-101 написано, что служба файрвола Microsoft Firewall (fwsrv) при старте обращается к службе хранения  Microsoft TMG Storage (isastg) за текущей политикой. Служба запустится, если хотя бы одна из копий конфигурации в реестре читается. Если ни одна из копий в реестре не читается, файрвол будет блокировать всё.

Текущая конфигурация узла массива состоит из:

1.      Общей конфигурации массива (объект Array);

2.      Компонентов правил (компьютеры, пользователи, сети …. – много разных типов объектов);

3.      Определений протоколов (объекты типа Protocol);

4.      Политики (ArrayPolicy - правила, которые состоят из ссылок на компоненты правил и ссылок на определения протоколов).

Если массив подключен к EMS, то в пункты 2-4 добавляются объекты, заданные в корпоративной политике (компоненты правил, протоколы, правила заданные на уровне предприятия). Корпоративную политику по умолчанию изменить нельзя (в ней находится только одно запрещающее всё правило), но можно создать свою корпоративную политику, сконфигурировать её как надо и назначить её массиву.

Конфигурация в реестре состоит из следующих компонент:

Раздел

Роль

Результат исследования

HKLM\IsaStg_Cache*

Используется как рабочая площадка для смешивания политик массива и предприятия

·        IsaStg_Cache (msFPCArrayRoot) contains

o   home Array config (msFPCArrays/msFPCArray)

o   no Arrays/{array_GUID}/ArrayPolicy

o   no Arrays/{array_GUID}/RuleElements/Protocols

o   Enterprise config (msFPCEnterprise)

o   no Enterprise/Policies

o   no Enterprise/RuleElements/Protocols

·        IsaStg_CacheArrPolicy - Contains Arrays/{array_GUID}/ArrayPolicy - home Array policy (msFPCArrayPolicy)

·        IsaStg_CacheArrProt - Contains Arrays/{array_GUID}/RuleElements/Protocols - home array protocols (msFPCProtocols/ many msFPCProtocol) (155)

·        IsaStg_CacheEntPolicies - Contains Enterprise/Policies - policy used (msFPCPolicy). GUID is the same as stored in HKEY_LOCAL_MACHINE\IsaStg_Cache\Arrays\
{array_GUID}\PolicyAssignment\EnterprisePolicyUsed

·        IsaStg_CacheEntProt - Contains Enterprise/RuleElements/Protocols - enterprise protocols (msFPCProtocols/ many msFPCProtocol) (150)

HKLM\IsaStg_Eff1

HKLM\IsaStg_Eff2

 

Копии текущей конфигурации

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Fpc\Storage ActiveEffective указывает на активную ветку (например, \EffecTree1). При внесении изменений активная конфигурация переключается на другую ветку (\EffecTree2) и т.д. циклически.

 

·        (msFPCArrayRoot) contains

o   one home Array config (msFPCArrays/msFPCArray)

o   no Arrays/{array_GUID}/ArrayPolicy

o   no Arrays/{array_GUID}/RuleElements/Protocols

HKLM\IsaStg_ Eff1Policy

HKLM\IsaStg_ Eff2Policy

 

 

Копия правил массива

 

Смесь правил массива и правил предприятия. Корпоративный контекст потерян, но корпоративные объекты имеют [Enterprise] в названии.

 

home Array policy (msFPCArrayPolicy) - Arrays/{array_GUID}/ArrayPolicy (вместе с правилами из Enterprise/Policies, они имеют [Enterprise] в названии)

HKLM\IsaStg_ Eff1Prot

HKLM\IsaStg_ Eff2Prot

 

Определения протоколов

Смесь протоколов массива и предприятия.

 

Arrays/{array_GUID}/RuleElements/Protocols (вместе с Enterprise/RuleElements/Protocols, они имеют [Enterprise] в названии)

 

Т.е. в реестре есть всё, что нужно, но форматы объектов в реестре и формат объектов в XML файле, пригодном для импорта на EMS, различаются (слева реестр, справа XML):

Вариант экспорта конфигурации из реестра и конвертации её в XML, если учесть что в иерархии около 350 классов, очень трудоёмкий. Но теперь, когда структура реестра более-менее понятна, можно рассмотреть вариант частичной переустановки с воссозданием конфигурации:

·        Установить новый EMS (желательно с тем же именем и ip-адресом, который был у прежнего сервера);

·        Создать там пустой массив с тем же именем;

·        Перенаправить на него текущие узлы с помощью скрипта ChangeStorageServer.vbs - "CSCRIPT ChangeStorageServer.vbs youremsserver.yourdomain.com windows" (если новый EMS имеет другое имя);

·        Воссоздать правила на основе информации из реестра.

Скрипт ChangeStorageServer.vbs

В процессе исследования скрипта ChangeStorageServer.vbs выяснилось, что, так как текущий сервер EMS недоступен, подключение происходит к иерархии объектов TMG в локальном хранилище (Local Storage Mode) с помощью недокументированных методов и свойств!

' Set VendorMode to be true in order to be able to save configuration in Local Storage Mode.
objFpcRoot.VendorMode = true

'Connect root to local storage
objFpcRoot.ConnectToLocalStorage

И после этого скрипт:

·        Прописывает имя нового EMS сервера в CN=ConfigurationStorageServerConnection,CN={array guid},CN=Arrays,CN=Array-Root,CN=FPC2

·        Прописывает имя нового EMS сервера в реестре (HKLM\SOFTWARE\Microsoft\Fpc\ADAMStorageServer)

Экспорт конфигурации из реестра в XML

Если взять скрипт импорта-экспорта конфигурации из технета и добавить туда root.ConnectToLocalStorage (vendormode=true необязателен, он нужен только для сохранения в локальную конфигурацию), экспорт конфигурации из локального хранилища начинается, но может прерваться с сообщением вида.

 tmgimpexp_from_reg.vbs(41, 7) (null): The Server referenced by Reports Configuration Reports does not exist.
 The error occurred on object 'Reports' of class 'Reports Configuration' in the scope of array 'ARRAY_LP'.

 

Это может произойти, если в конфигурации осталась ссылка на объект, которого нет (в данном случае это сервер отчётов, который был импортирован ранее из конфигурации другого массива). Чтобы удалить его из текущей конфигурации нужно:

·        Найти текущее дерево конфигурации (HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Fpc\Storage ActiveEffective – например, \EffecTree2)

·        Найти объект в реестре (в данном случае HKEY_LOCAL_MACHINE\IsaStg_Eff2\Arrays\{array guid}\Reports\ReportingServicesProperties\Server) и занулить ссылку msFPCName

После этого экспорт конфигурации из реестра проходит успешно, и XML файл с текущей локальной конфигурацией создаётся!

Импорт полученного из реестра XML на сервере EMS

Перед импортом нужно поставить на сервер EMS те же самые обновления, что и на узел, с которого была взята конфигурация. Т.е. значение элемента Build в файле XML должно совпадать с тем, что выдаёт Help/About консоли на EMS (по крайней мере сервис-пак должен совпадать). Это потому, что в сервис-паке может быть модифицирована схема конфигурации, что может повлечь наведённые ошибки при импорте.

Итак, патчлевел приведён в соответствие, но если попытаться импортировать XML файл, полученный из реестра вышеописанным методом, то импорт будет неудачен. Графическая консоль при этом не выдаёт никаких подробностей.

Если импортировать скриптом, предварительно добавив в него обработку ошибок из книжки TMG Administrators Companion,

 If 0 <> Err.Number Then

        WScript.Echo "Failed to import the current array configuration from " & _

                      szInFilePath & "; " & Err.Number & "; " & Err.Description

      '  Exit Function

    End If

 

 то сообщения становятся более осмысленными.

Кроме того, теперь появилась возможность сравнить XML файлы – один взять с тестового массива с полигона из консоли, а второй из реестра узла тестового массива (слева XML из реестра, справа XML из консоли).

В результате выяснилось следующее:

Экспортируется только текущая конфигурация массива (элемент Array без элемента Enterprise, но все корпоративные объекты присутствуют в конфигурации массива и помечены как [Enterprise]):

·        Array config (msFPCArrays/msFPCArray)  - конфигурация массива

·        Arrays/{array_GUID}/ArrayPolicy  - правила массива вперемешку с корпоративными (includes [Enterprise] rules in PolicyRules, they are on top. [Enterprise] rules may be moved to Root/Enterprise/Policies/Policy/PolicyRules)

·        Arrays/{array_GUID}/RuleElements/Protocols – протоколы массива вперемешку с корпоративными (includes [Enterprise] protocols) 164 total, 10 with -5)

·        no Enterprise element (msFPCEnterprise) – элемента Enterprise нет

o   no Enterprise/Policies - enterprise rules are merged with Array rules

o   no Enterprise/RuleElements/Protocols  -  enterprise protocols are merged with Array protocols

Что нужно сделать, чтобы XML из реестра импортировался на сервере EMS

После нескольких десятков пробных импортов и тщательного сравнения XML файлов удалось выделить следующий минимальный набор патчей, которые необходимо произвести над XML файлом из реестра для его успешного импорта на сервере EMS:

Что есть в XML фале экспортированном из реестра

Как починить, чтобы XML импортировался на EMS

Как выяснено

1.      no Enterprise element

copy Enterprise element with default policy from console-exported XML

визуально

2.      Enterprise networks are in Root/Arrays/Array/NetConfig/EnterpriseNetworks (5 default and the rest are custom)

EnterpriseNetworks should be moved to Root/Enterprise/NetConfig  or else import will fail

 

ошибка 0x80070002 file not found 

Для объекта EnterpriseNetworks

 

3.      no enterprise policy assigned to array

add Root/Arrays/Array/PolicyAssignment (before ConfigurationStorageServerConnection element) or else import will fail. UUID in <fpc4:Name... should match the one in Enterprise/Policies. UUID of default Enterprise policy is {aa53ce81-985c-4362-81cd-51a3e517742c}

 

<fpc4:PolicyAssignment StorageName="PolicyAssignment" StorageType="1">

                              <fpc4:Ref StorageName="EnterprisePolicyUsed" StorageType="1">

                              <fpc4:Name dt:dt="string">{Enterprise policy UUID here}</fpc4:Name>

                              <fpc4:RefClass dt:dt="string">msFPCPolicy</fpc4:RefClass>

                              <fpc4:Scope dt:dt="int">1</fpc4:Scope>

</fpc4:Ref>

</fpc4:PolicyAssignment>

Ошибка Failed to import the current array configuration; -2147024809; The parameter is incorrect.

The error occurred on object 'ARRAY_NAME' of class 'Array' in the scope of array 'ARRAY_NAME'.

 

4.      Security roles at Arrays/Array/AdminSecurity/DelegatedAdmins are different from those in LDS

replace AdminSecurity element with default

<fpc4:AdminSecurity StorageName="AdminSecurity" StorageType="1">

                              <fpc4:SecurityRoles StorageName="SecurityRoles" StorageType="1">

                              <fpc4:SecurityRole StorageName="{e55f4cc7-84c9-48de-809d-8b0e4b34e4dd}" StorageType="1">

                              <fpc4:Description dt:dt="string">Has full control over the array-level configuration for this array, including permissions to assign array roles. Has read-only access to the enterprise policy applied to this array.</fpc4:Description>

                              <fpc4:Name dt:dt="string">Forefront TMG Array Administrator</fpc4:Name>

                              <fpc4:Predefined dt:dt="boolean">1</fpc4:Predefined>

                              </fpc4:SecurityRole>

                              <fpc4:SecurityRole StorageName="{b59a032e-1018-4e3a-aaac-9c8a128cd0df}" StorageType="1">

                              <fpc4:Description dt:dt="string">Has full access to array monitoring and read-only access to the array configuration. Has read-only access to the enterprise policy applied to this array.</fpc4:Description>

                              <fpc4:Name dt:dt="string">Forefront TMG Array Auditor</fpc4:Name>

                              <fpc4:Predefined dt:dt="boolean">1</fpc4:Predefined>

                              </fpc4:SecurityRole>

                              <fpc4:SecurityRole StorageName="{9c0bfea2-f463-438f-85d2-fcd9e81a9c94}" StorageType="1">

                              <fpc4:Description dt:dt="string">Has restricted access to array monitoring features. Can view sessions, view and reset alerts, query service status, and verify connectivity.</fpc4:Description>

                              <fpc4:Name dt:dt="string">Forefront TMG Array Monitoring Auditor</fpc4:Name>

                              <fpc4:Predefined dt:dt="boolean">1</fpc4:Predefined>

                              </fpc4:SecurityRole>

                              </fpc4:SecurityRoles>

                              <fpc4:DelegatedAdmins StorageName="DelegatedAdmins" StorageType="1"/>

</fpc4:AdminSecurity>

В консоли ролей уровня массива много и они не те, что у тестового массива

5.      Full Arrays/Array/RuleElements/UrlCategorySets and UrlCategories

(optionally) replace full UrlCategorySets element with <fpc4:UrlCategorySets StorageName="UrlCategorySets" StorageType="1"/> and delete UrlCategories element

визуально

 

После этого импорт с перезаписью проходит успешно.

Если новый EMS имеет другое имя и ip-адрес

В экспортированном из реестра XML файле будут ссылки на прежний сервер EMS. Если новый сервер EMS имеет другое имя и ip-адрес, то перед импортом XML файла нужно сделать следующее:

·        Перенаправить сервер массива на новый сервер EMS с помощью ChangeStorageServer.vbs;

·        Исправить имя и ip-адрес EMS-сервера в XML файле (замена по всему XML-файлу "OLD_EMS_NAME" на "NEW_EMS_NAME"):

o   В "Remote Management Computers" computerset <fpc4:IPAddress and <fpc4:Name

o   В "Enterprise Configuration Storage Servers"   domain name set

o   В "ConfigurationStorageServerConnection" Array element <fpc4:PrimaryConfigurationStorageServer ..

Нормализация конфигурации

Надо, однако, отметить, что конфигурация импортируется неидеально. В идеале нужно было бы также найти и перенести в элемент Enterprise все элементы корпоративных правил.

В противном случае корпоративные правила импортируются, но в них будут ссылки на несуществующие корпоративные объекты (как, например, в правиле “[Enterprise] Allow to websense”):

При нажатии на такое правило консоль ругается, и резервное копирование скриптом или из консоли не проходит.

Наладка резервного копирования

При резервном копировании возникает ошибка вида:

Общий метод устранения подобных ошибок такой (подробное описание  http://blogs.technet.com/b/yuridiogenes/archive/2009/09/18/error-0xc0040357-while-trying-to-backup-isa-server-configuration.aspx):

 

Воссоздание корпоративных правил

Перед созданием корпоративных правил нужно создавать новую корпоративную политику и присвоить её массиву, т.к. в корпоративной политике Default Policy правила создавать нельзя.

Общий алгоритм воссоздания/переноса правил:

·        Перенести элементы, которые должны использоваться в корпоративных правилах, с уровня массива на уровень предприятия мастером  (Right-click array, selectCopy Array Rule Elements…”;

·        Воссоздать новое корпоративное правило с нужными параметрами (чтобы посмотреть, какие компоненты используются в правиле, нужно найти его по имени в XML файле).

Можно попробовать не воссоздавать правило, а взять готовое правило из XML файла и импортировать его в корпоративную политику:

o   Создать новое правило корпоративной политики с любыми параметрами;

o   Экспортировать его в XML файл (в полученном файле будет правило и все объекты, на которое оно ссылается);

o   Заменить в XML файле корпоративного правила содержимое секции
<fpc4:Root \ <
fpc4:Enterprise \ <fpc4:Policies \ <fpc4:Policy \ <fpc4:PolicyRules \ <fpc4:PolicyRule
на содержимое секции нужного правила из
XML файла, полученного из реестра
<fpc4:Root \ <fpc4:Arrays \ <
fpc4:Array \ <fpc4:ArrayPolicy \ <fpc4:PolicyRules \ <fpc4:PolicyRule

o   Импортировать модифицированный файл корпоративного правила назад в новое корпоративное правило.

 

Смена идентификатора нового массива и синхронизация конфигурации

Файл конфигурации импортировался в новый массив, но серверы массива почему-то не используют её, и все изменения, внесенные на EMS, не воспринимаются серверами массива. Это выглядит так:

Со стороны EMS (он не может связаться с сервером массива):

Со стороны сервера массива (конфигурация не синхронизирована):

 

Доступен пункт «Отключить сервер от массива» (Disjoin server from array), но он не работает:

Это происходит потому, что массив идентифицируется не по имени, а по UUID. При создании нового массива ему был присвоен новый UUID, и при импорте XML-конфигурации UUID не меняется на тот, что задан в XML-конфигурации!

Если зайти в LDS на EMS и поменять идентификатор массива, чтобы он совпадал с тем, что в реестре, мы тем самым наладим связь узла с массивом (слева UUID в реестре, справа в LDS).

После этого всё заработает – через некоторое время конфигурация с EMS сама начнет синхронизироваться на узлы массива.

На рабочих серверах это проделывать нужно с осторожностью, т.к. конфигурация с EMS перезапишет текущую конфигурацию на узлах массива, и если в конфигурации на EMS не будет нужных для работы правил, пользователи будут недовольны.

ВНИМАНИЕ! Прежде чем менять UUID нужно удостовериться, что в конфигурации на EMS есть все нужные для работы пользователей правила, что в них нет ссылок на несуществующие объекты, и что бакап конфигурации массива из консоли EMS проходит успешно!

Как проверить, что конфигурация с EMS синхронизируется на узлы массива

Чтобы удостовериться, что связь наладилась, и синхронизация изменений идёт как надо, можно:

1.      Создать на EMS любое правило массива;

2.      Экспортировать новое правило в XML, посмотреть в XML какой у правила UUID;

3.      Подождать, когда синхронизация конфигурации закончится;

4.      В реестре на узле массива в текущей ветке конфигурации найти правило с этим UUID, посмотреть его свойства и удостовериться, что это то самое правило, что мы только что создали.

Общий алгоритм восстановления конфигурации TMG, если нет бакапа

Что делать, если EMS сервер недоступен и бакапа нет:

·        Установить новый сервер EMS;

·        Экспортировать в XML файл текущую конфигурацию из реестра сервера массива;

·        Создать новую конфигурацию предприятия, взять корпоративные сети и правила из XML файла;

·        Создать новый массив с тем же именем и именем узла;

·        Модифицировать XML файл, экспортированный из реестра, (добавить/убрать/перенести элементы по списку из таблицы) и импортировать его в новый массив;

·        Нормализовать конфигурацию - воссоздать/перенести на свое место  недостающие правила и объекты (в т.ч. корпоративные) и другие настройки, чтобы в критически важных правилах не было ссылок на отсутствующие объекты и резервное копирование конфигурации успешно проходило;

·        Наладить синхронизацию конфигурации - изменить идентификатор массива в LDS, чтобы он совпадал с текущим идентификатором в реестре на узлах массива, и дождаться синхронизации конфигурации.

Скрипт сохранения текущей конфигурации из реестра узла массива

Rem isa_reg_config.bat:

reg export HKLM\Software\Microsoft\fpc fpc.reg

reg export HKLM\IsaStg_Cache            IsaStg_Cache.reg

reg export HKLM\IsaStg_CacheArrPolicy   IsaStg_CacheArrPolicy.reg

reg export HKLM\IsaStg_CacheArrProt     IsaStg_CacheArrProt.reg

reg export HKLM\IsaStg_CacheEntPolicies IsaStg_CacheEntPolicies.reg

reg export HKLM\IsaStg_CacheEntProt     IsaStg_CacheEntProt.reg

reg export HKLM\IsaStg_Dynamic          IsaStg_Dynamic.reg

reg export HKLM\IsaStg_Eff1             IsaStg_Eff1.reg

reg export HKLM\IsaStg_Eff1Policy       IsaStg_Eff1Policy.reg

reg export HKLM\IsaStg_Eff1Prot         IsaStg_Eff1Prot.reg

reg export HKLM\IsaStg_Eff2             IsaStg_Eff2.reg

reg export HKLM\IsaStg_Eff2Policy       IsaStg_Eff2Policy.reg

reg export HKLM\IsaStg_Eff2Prot         IsaStg_Eff2Prot.reg

Скрипт экспорта текущей конфигурации из реестра узла массива в XML

' tmgexp_from_reg.vbs:

Sub ExportFromRegistry()

    ' Use this password

    pass="mypassword"

    'Declare the objects needed

    Dim root      ' The FPCLib.FPC root object

    Dim isaArray  ' An FPCArray object

    localDate = FormatDateTime(date(), 1)

    ' Create the root object.

    Set root = CreateObject("FPC.Root")

    ' VendorMode = true is optional, needed only if save to local storage is needed

    root.VendorMode = true

    'Connect root to local storage

    root.ConnectToLocalStorage

    ' Get a reference to the array object.

    Set isaArray = root.GetContainingArray()

    WScript.Echo "Exporting the configuration of the " & _

                     isaArray.Name & " array object to " & _

                     WScript.Arguments(0) & " " & localdate & ".xml" & " ..."

    isaArray.ExportToFile WScript.Arguments(0) & " " & localdate & ".xml",15,pass

    ' 15 = 1 + 2 + 4 + 8

    ' fpcExportImportPasswords (0x00000001)

    ' The optional data includes encrypted secret data, such as passwords or shared secrets that are used to create digital signatures for authenticating to RADIUS servers.

    ' fpcExportImportUserPermissions  (0x00000002)

    ' The optional data includes the security roles assigned to delegated administrators. The delegated administrators are identified by the security identifiers (SIDs) of their user accounts, which are included in this optional data. These SIDs, which are relevant to the workgroup or domain of the exporting computer, are not necessarily relevant to that of the importing computer.

    ' fpcExportImportServerSpecific  (0x00000004)

    ' The optional data includes server-specific information, which consists of cache drive settings and SSL certificates.

    ' fpcExportImportEnterpriseSpecific (0x00000008)

    ' The optional data includes information that is specific to ISA Server Enterprise Edition (available only in ISA Server Enterprise Edition).

    WScript.Echo "Exporting was completed successfully."

    WScript.Quit

End Sub

ExportFromRegistry

 

Скрипт импорта конфигурации в заданный массив

' tmgimp.vbs   -  Parameters

' 1 – xml file to import

' 2 – array name to import to

Sub ImportExport()

    ' Define a constant to indicate optional

    ' data to be exported or imported.

    Const OptionalData = 15

    'Declare the objects needed

    Dim root      ' The FPCLib.FPC root object

    Dim isaArray  ' An FPCArray object

    ' Create the root object.

    Set root = CreateObject("FPC.Root")

    ' Get a reference to the array object.

    Set isaArray = root.Arrays.Item(WScript.Arguments(1))

      WScript.Echo "Importing the configuration from " & _

                    WScript.Arguments(0) & " to the " & _

                    isaArray.Name & " array object ..."

 

    ' declare and define the optional data for the export method

    Dim iOptionalData: iOptionalData = OptionalData

     ' declare and define the TMG export data password

    Dim szPassword: szPassword = "mypassword"

    ' declare and define the TMG import policy overwrite flag

    Dim bOverwrite: bOverwrite = True

     ' declare and define the TMG import services reset flag

    Dim bReset: bReset = False

     ' declare and define the TMG import policy reload flag

    Dim bReload: bReload = True

     ' declare and define the TMG import file path

    Dim szInFilePath: szInFilePath = WScript.Arguments(0)

     ' enable script error handling

    On Error Resume Next

    ' try to import the configuration update from a file

    ' parameters - FILEPATH, optdata, password, overwrite, services reset, policy reload

     isaArray.ImportFromFile szInFilePath, iOptionalData, szPassword, bOverwrite, bReset, bReload

'     isaArray.ImportFromFile WScript.Arguments(0),noOptionalData,,,True

    If 0 <> Err.Number Then

        WScript.Echo "Failed to import the current array configuration from " & _

                      szInFilePath & "; " & Err.Number & "; " & Err.Description

      '  Exit Function

    End If

End Sub

ImportExport