Шабунин Антон, MCSE 2003, MCITP EA, MCT
26 июля 2012 v 1.0
Оглавление
Скрипт ChangeStorageServer.vbs
Экспорт конфигурации из реестра в XML
Импорт полученного из реестра XML на сервере EMS
Что нужно сделать, чтобы XML из реестра импортировался на сервере EMS
Если новый EMS имеет другое имя и ip-адрес
Наладка резервного копирования
Воссоздание корпоративных правил
Смена идентификатора нового массива и синхронизация конфигурации
Как проверить, что конфигурация с EMS синхронизируется на узлы массива
Общий алгоритм восстановления конфигурации TMG, если нет бакапа
Скрипт сохранения текущей конфигурации из реестра узла массива
Скрипт экспорта текущей конфигурации из реестра узла массива в XML
Скрипт импорта конфигурации в заданный массив
Один сервер 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.
По официальным сведениям с блога команды разработки 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\ · 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 выяснилось, что, так как текущий сервер 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)
Если взять скрипт импорта-экспорта конфигурации из технета и добавить туда 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 файл с текущей локальной конфигурацией создаётся!
Перед импортом нужно поставить на сервер EMS те же самые обновления, что и на узел, с которого была взята конфигурация. Т.е. значение элемента Build в файле XML должно совпадать с тем, что выдаёт Help/About консоли на EMS (по крайней мере сервис-пак должен совпадать). Это потому, что в сервис-паке может быть модифицирована схема конфигурации, что может повлечь наведённые ошибки при импорте.
Итак, патчлевел приведён в соответствие, но если попытаться импортировать XML файл, полученный из реестра вышеописанным методом, то импорт будет неудачен. Графическая консоль при этом не выдаёт никаких подробностей.
Если импортировать скриптом, предварительно добавив в него обработку ошибок из книжки TMG Administrator’s 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 файлов удалось выделить следующий минимальный набор патчей, которые необходимо произвести над 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 |
визуально |
После этого импорт с перезаписью проходит успешно.
В экспортированном из реестра 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, select “Copy 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 проходит успешно!
Чтобы удостовериться, что связь наладилась, и синхронизация изменений идёт как надо, можно:
1. Создать на EMS любое правило массива;
2. Экспортировать новое правило в XML, посмотреть в XML какой у правила UUID;
3. Подождать, когда синхронизация конфигурации закончится;
4. В реестре на узле массива в текущей ветке конфигурации найти правило с этим UUID, посмотреть его свойства и удостовериться, что это то самое правило, что мы только что создали.
Что делать, если 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
' 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