- Задача: Добавить не стандартный порт HTTPS на прокси сервер Forefront TMG.
- Инструменты: [Windows] powershell.
- Параметры: скрипт должен работать как на Standart так и на Enterprise конфигурации;
- Описание: некоторые веб-службы, как например, sbi.sberbank.ru:9443 используют специфический порт для SSL-туннеля. TMG, он же ISA позволяет создать пользовательский порт через консоль, но он отказывается работать таким образом, выдавая сообщение "12204 The specified Secure Sockets Layer (SSL) port is not allowed.". В интернете многие предлагают использовать скрипт "isa_tpr.js" для управления SSL портами, но он отказывается работать, в Enterprise конфигурациях, выдавая "This is not an ISA Server." Скрипт позволяет выбрать необходимый массив, добавить, удалить порты и просто является примером администрирования TMG из PowerShell'a.
# Создаем корневой COM-объект
$oFPC = New-Object -ComObject FPC.Root;
# Выводим информацию о сервере конфигураций, к которому подключились
Write-Host ('Configuration storage server: '+$oFPC.ConfigurationStorageServer);
# Устанавливаем счетчик количества массивов на сервере конфигураций
$iArrayNumber = 0;
# Задаем массив имен массивов на сервере конфигураций
[string[]]$aAvailableArraysNames = @();
# Проходимся по всем массивам на сервере конфигураций
foreach ($oArray in $oFPC.Arrays)
{
# Массив есть - увеличиваем счетчик
$iArrayNumber++;
# Сохраняем имя массива в массив имен массивов сервера конфигураций (масло масленое)
$aAvailableArraysNames+=$oArray.Name;
# Выводим имя найденного массива
Write-Host ('Array '+$iArrayNumber+'. "'+$aAvailableArraysNames[$iArrayNumber-1]+'".');
}
# Если массив только один, что часто бывает
if ($iArrayNumber -eq 1)
{
# Вводим автоматом номер массива, которым будем управлять
$sInput = 1;
}
else
{
# Спрашиваем номер массива
$sInput = Read-Host 'Select array number: ';
}
# Задаем имя массива для работы
$oCurrentArrayName = $aAvailableArraysNames[$sInput-1];
# Задаем массив для работы
$oCurrentArray = $oFPC.Arrays.Item($oCurrentArrayName);
# Выводим текущие SSL-порты
Write-Host ('SSL ports at array "'+$oCurrentArray.Name+'":');
$oCurrentArray.ArrayPolicy.WebProxy.TunnelPortRanges;
# Спрашиваем, будем ли добавлять порт
$sInput = Read-Host ("`n"+'Add port?[y/n]');
switch ($sInput)
{
y
{
# Спрашиваем имя порта
$sChosenName = Read-Host 'Name';
# Спрашиваем начальное число диапазона портов
$sChosenTunnelLowPort = Read-Host 'TunnelLowPort';
# Спрашиваем конечное число диапазона портов
$sChosenTunnelHighPort = Read-Host 'TunnelHighPort';
# Добавляем диапазон портов
$oCurrentArray.ArrayPolicy.WebProxy.TunnelPortRanges.AddRange($sChosenName,$sChosenTunnelLowPort,$sChosenTunnelHighPort);
# Сохраняем конфигурацию (не забываем рестартануть службу TMG Firewall для вступления изменений в силу
$oCurrentArray.ArrayPolicy.WebProxy.TunnelPortRanges.Save();
}
}
# Спрашиваем, будем ли удалять порт
$sInput = Read-Host 'Del port?[y/n]';
switch ($sInput)
{
y
{
# Спрашиваем имя порта
$sChosenName = Read-Host 'Name';
# Удаляем порт
$oCurrentArray.ArrayPolicy.WebProxy.TunnelPortRanges.Remove($sChosenName);
# Сохраняем конфигурацию (не забываем рестартануть службу TMG Firewall для вступления изменений в силу
$oCurrentArray.ArrayPolicy.WebProxy.TunnelPortRanges.Save();
}
}
Автор скрипта живет здесь.
Комментариев нет:
Отправить комментарий