Задача: Добавить не стандартный порт 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." "На коленках", как и многие), был написан скрипт, отображающий SSL-порты. Позволяет выбрать необходимый массив, добавить, удалить порты и просто является примером администрирования TMG из PowerShell'a.
01 | # Создаем корневой COM-объект | ||
02 | $oFPC = New-Object -ComObject FPC.Root; | ||
03 | # Выводим информацию о сервере конфигураций, к которому подключились | ||
04 | Write-Host ('Configuration storage server: '+$oFPC.ConfigurationStorageServer); | ||
05 | # Устанавливаем счетчик количества массивов на сервере конфигураций | ||
06 | $iArrayNumber = 0; | ||
07 | # Задаем массив имен массивов на сервере конфигураций | ||
08 | [string[]]$aAvailableArraysNames = @(); | ||
09 | # Проходимся по всем массивам на сервере конфигураций | ||
10 | foreach ($oArray in $oFPC.Arrays) | ||
11 | { | ||
12 | # Массив есть - увеличиваем счетчик | ||
13 | $iArrayNumber++; | ||
14 | # Сохраняем имя массива в массив имен массивов сервера конфигураций (масло масленое) | ||
15 | $aAvailableArraysNames+=$oArray.Name; | ||
16 | # Выводим имя найденного массива | ||
17 | Write-Host ('Array '+$iArrayNumber+'. "'+$aAvailableArraysNames[$iArrayNumber-1]+'".'); | ||
18 | } | ||
19 | # Если массив только один, что часто бывает | ||
20 | if ($iArrayNumber -eq 1) | ||
21 | { | ||
22 | # Вводим автоматом номер массива, которым будем управлять | ||
23 | $sInput = 1; | ||
24 | } | ||
25 | else | ||
26 | { | ||
27 | # Спрашиваем номер массива | ||
28 | $sInput = Read-Host 'Select array number: '; | ||
29 | } | ||
30 | # Задаем имя массива для работы | ||
31 | $oCurrentArrayName = $aAvailableArraysNames[$sInput-1]; | ||
32 | # Задаем массив для работы | ||
33 | $oCurrentArray = $oFPC.Arrays.Item($oCurrentArrayName); | ||
34 | # Выводим текущие SSL-порты | ||
35 | Write-Host ('SSL ports at array "'+$oCurrentArray.Name+'":'); | ||
36 | $oCurrentArray.ArrayPolicy.WebProxy.TunnelPortRanges; | ||
37 | # Спрашиваем, будем ли добавлять порт | ||
38 | $sInput = Read-Host ("`n"+'Add port?[y/n]'); | ||
39 | switch ($sInput) | ||
40 | { | ||
41 | y | ||
42 | { | ||
43 | # Спрашиваем имя порта | ||
44 | $sChosenName = Read-Host 'Name'; | ||
45 | # Спрашиваем начальное число диапазона портов | ||
46 | $sChosenTunnelLowPort = Read-Host 'TunnelLowPort'; | ||
47 | # Спрашиваем конечное число диапазона портов | ||
48 | $sChosenTunnelHighPort = Read-Host 'TunnelHighPort'; | ||
49 | # Добавляем диапазон портов | ||
50 | $oCurrentArray.ArrayPolicy.WebProxy.TunnelPortRanges.AddRange($sChosenName, $sChosenTunnelLowPort, $sChosenTunnelHighPort); | ||
51 | # Сохраняем конфигурацию (не забываем рестартануть службу TMG Firewall для вступления изменений в силу | ||
52 | $oCurrentArray.ArrayPolicy.WebProxy.TunnelPortRanges.Save(); | ||
53 | } | ||
54 | } | ||
55 | # Спрашиваем, будем ли удалять порт | ||
56 | $sInput = Read-Host 'Del port?[y/n]'; | ||
57 | switch ($sInput) | ||
58 | { | ||
59 | y | ||
60 | { | ||
61 | # Спрашиваем имя порта | ||
62 | $sChosenName = Read-Host 'Name'; | ||
63 | # Удаляем порт | ||
64 | $oCurrentArray.ArrayPolicy.WebProxy.TunnelPortRanges.Remove($sChosenName); | ||
65 | # Сохраняем конфигурацию (не забываем рестартануть службу TMG Firewall для вступления изменений в силу | ||
66 | $oCurrentArray.ArrayPolicy.WebProxy.TunnelPortRanges.Save(); | ||
67 | } | ||
68 | } |
file.ps1:
Комментариев нет:
Отправить комментарий