Создание сценариев для серверных вычислений: Часть 2. Сервер служб терминалов и параметры подключения

Опубликовано: 25 Апреля, 2023

  • Сценарии для серверных вычислений: Часть 3 — Сценарии Citrix Presentation Server

Введение

В части 1 этой серии мы рассмотрели, как можно использовать VBScript и WMI для модификации определенных атрибутов терминальных служб Active Directory User Object. В этой статье мы рассмотрим настройки терминальных служб для самого сервера. Другими словами, мы собираемся узнать, что мы можем изменить в настройках терминальных служб сервера и как изменить эти настройки. Опять же, мы будем предполагать, что читатель этой статьи выполняет эти сценарии на терминальном сервере Windows Server 2003 и обладает достаточными знаниями как в терминальных службах, так и в сценариях, а также обладает необходимыми правами и разрешениями для изменения рассматриваемых параметров. Кроме того, мы рассмотрим (где применимо) только параметры сценариев удаленного рабочего стола (не ICA) для подключений. Мы рассмотрим настройки подключения ICA в следующих статьях этой серии. Тем не менее, что касается настроек подключения, рассматриваемый материал в равной степени относится как к RDP, так и к ICA. С этой целью обратите внимание, что приведенные здесь примеры сценариев будут изменять ОБА настройки RDP и ICA на вашем целевом сервере с теми же конечными результатами. Пожалуйста, протестируйте примеры сценариев в лабораторной среде, прежде чем запускать их на рабочих серверах.

Как правило, мы, как администраторы, изменяем параметры служб терминалов либо путем редактирования конфигурации вручную, либо с помощью объектов групповой политики для централизованной настройки параметров. Хотя я большой поклонник групповой политики, не все параметры, доступные в графическом интерфейсе, доступны как определяемые элементы политики внутри объекта групповой политики. Более того, не каждый администратор служб терминалов может позволить себе роскошь редактировать (или даже использовать) объекты групповой политики. В производстве все еще существует несколько доменов на основе NT, которые не перенесены в Active Directory. Таким образом, использование этих параметров в сценариях дает несколько преимуществ. С точки зрения согласованности кто-то может «случайно» внести изменения в настройки служб терминалов на сервере в наших производственных средах. Это изменение может занять БОЛЬШОЕ количество времени, чтобы отследить (или даже проявить себя в большой среде с балансировкой нагрузки). В этом случае сценарий, устанавливающий параметры терминальных служб на «корпоративный» стандарт, был бы полезным первым шагом в устранении неполадок, и его можно было бы даже использовать в превентивном режиме, выполняя его как часть обычного цикла перезагрузки сервера. Для тех, кому не повезло иметь объекты групповой политики Active Directory для помощи в управлении вашими терминальными серверами (или возможность редактировать такие объекты групповой политики, если вы это делаете), такой сценарий может быть отличным инструментом для поддержания согласованности настроек для сервера. строит. И лучшая причина из всех… это быстрее и стабильнее (особенно в больших фермах серверов). И действительно лучше всего то, что есть некоторые скриптовые настройки, для которых нет эквивалента графического интерфейса!

Итак, без лишних слов, давайте обратим внимание на различные параметры, доступные через графический интерфейс. Основным инструментом для редактирования сервера служб терминалов и параметров подключения является средство настройки служб терминалов, расположенное в папке «Инструменты администрирования» в меню «Пуск» вашего сервера. (Что касается группы Citrix, мы лучше всего знаем его как средство настройки подключения Citrix.) Поскольку в следующих статьях мы будем рассматривать специфические для Citrix параметры, мы потратим большую часть времени на средство Microsoft. Пожалуйста, обратитесь к рисунку 1 ниже, чтобы посмотреть на два раздела конфигурации, настройки сервера и подключения.


Рисунок 1: Настройки сервера служб терминалов

Почти все различные настройки для сервера и отдельных подключений можно настроить с помощью сценариев WMI. Раздел «Настройки сервера » содержит шесть основных параметров, которые можно редактировать. Пожалуйста, обратитесь к Таблице 1 для имени параметра и его соответствующего атрибута WMI и возможных значений.

Настройка графического интерфейса

Значение атрибута

Значение для скрипта

Удалять временные папки при выходе

SetPolicyPropertyName("DeleteTempFolders", X)

Х=0,1

Использовать временные папки на сеанс

SetPolicyPropertyName("UseTempFolders", X)

Х=0,1

Лицензирование *

Тип Лицензирования

0,1,2,4

Активный рабочий стол

Активдесктоп

0,1

Совместимость разрешений

Разрешение пользователя

Х=0,1

Ограничить каждого пользователя одним сеансом

SetSingleSession(X)

Х=0,1

Таблица 1: Параметры сервера служб терминалов Значение WMI

* Только для чтения, следует изменить с помощью «Установка и удаление программ».

При рассмотрении таблицы « Параметры сервера» следует обсудить некоторые из них более подробно. Режим лицензирования можно изменить только через «Установка и удаление программ». Если ваш сервер находится в режиме удаленного администрирования, вам нужно будет изменить его на режим служб терминалов на все для дальнейшего использования сценариев параметров. Многие параметры, которые мы можем настроить с помощью скрипта, доступны ТОЛЬКО для ИСТИННЫХ терминальных серверов. После преобразования сервера лицензирование можно «изменить» с «на устройство» на «на пользователя» с помощью скрипта, в противном случае этот атрибут доступен только для чтения. Различные значения, перечисленные для лицензирования, заслуживают отдельного отдельного списка.

Ценность

Значение

0

Персональный терминальный сервер — только для Windows XP

1

Удаленный рабочий стол для администрирования

2

На устройство — доступно только для настоящих терминальных серверов.

4

На пользователя — доступно только для настоящих терминальных серверов.

Таблица 2: Значения LicensingType

Кроме того, есть несколько параметров, доступных для сценариев, которые НЕ доступны в графическом интерфейсе, но многие из которых отображаются в групповой политике. Домашняя папка, папка профиля и резервный драйвер принтера, и это лишь некоторые из них, являются адресуемыми атрибутами WMI служб терминалов. Дополнительные сведения об этих конкретных параметрах см. в справочнике Microsoft WMI по службам терминалов по адресу http://msdn.microsoft.com/library/default.asp?url=/library/en-us/termserv/termserv/win32_terminalservicesetting.asp.

Позже мы увидим, как интегрировать настройки сервера в пригодный для использования сценарий WMI. А пока давайте рассмотрим настройки подключения и доступные там настройки. Папка Connections в инструменте настройки служб терминалов позволяет нам изменять атрибуты Connections (или Winstations ), которые наши пользователи используют в качестве транспорта для подключения к терминальным серверам. Как минимум, у вас будет RDP-Tcp в качестве действительного подключения, и их может быть больше в зависимости от наличия Citrix Presentation Server (также известного как MetaFrame). Рисунок 2 иллюстрирует взаимосвязь «соединений».


Рисунок 2: Настройки подключения к службам терминалов

Глядя непосредственно на свойства данного соединения, можно увидеть БОГАТСТВО доступных параметров настройки. Для целей этой статьи мы рассмотрим свойства RDP-Tcp и ПОЧТИ все настройки, которые можно изменить для данной вкладки. Глядя на рисунок 3, мы будем детально манипулировать настройками каждой вкладки; сохранить РАЗРЕШЕНИЯAPI (и впоследствии МЕТОДЫ, открытые для WMI ) ограничены в этой области. Можно предположить, что это было сделано намеренно из соображений безопасности. Мы бы не хотели использовать мошеннические сценарии WMI, которые дают группе «все» права входа в систему на наших серверах с включенными службами терминалов, не так ли?


Рисунок 3: Настройки RDP-TCP

Таблица 3 ниже дает нам более подробную информацию о различных вкладках и типах информации, которые можно настроить. С точки зрения практического удобства я бы порекомендовал вам «вручную настроить» сервер так, как вы хотите, а затем записать эти настройки, чтобы упростить создание (или замену в вышеупомянутом примере сценария в этой статье).

Настройка графического интерфейса

Значение атрибута

Значение для скрипта

—ОБЩИЕ ВКЛАДКИ

Win32_TSGeneralSetting

Комментарий

Комментарий

Нить

Уровень шифрования

сетэнкриптионлевел

1,2,3,4

Используйте стандартную аутентификацию Windows

Аутентификация Windows

0,1

— ВКЛАДКА «НАСТРОЙКИ ВХОДА»

Win32_TSLogonSetting

Всегда запрашивать пароль

сетпромптфорпароль

0,1

Всегда используйте следующую информацию для входа

Явный вход в систему (X, Y, Z)

X=Пользователь, Y=Домен, Z=Пароль

— ВКЛАДКА СЕССИИ

Win32_TSSessionSetting

Переопределить настройки пользователя (время)

Политика Лимита Времени

0,1

Когда лимит сеанса достигнут…

БрокенКоннектионПолици

0,1

Разрешить повторное подключение…

Политика повторного подключения

0,1

— ВКЛАДКА «ОКРУЖАЮЩАЯ СРЕДА»

Win32_TSEnvironmentSetting

Переопределить настройки пользователя…

InitialProgramPolicy

0,1

— ВКЛАДКА ПУЛЬТА ДИСТАНЦИОННОГО УПРАВЛЕНИЯ

Win32_TSRemoteControlSetting

Реультеконтролполици = Х

Дистанционное управление(Y)

Х=0,1

Y=0-4

0 = Отключить

1 = EnableInputNotify

2 = ВключитьВводНоУведомление

3 = EnableNoInputNotify

4 = ВключитьNoInputNoNotify

— ВКЛАДКА НАСТРОЙКИ КЛИЕНТА

Win32_TSClientSetting

Соединение (Использовать настройки соединения…)

Политика подключения

Параметры подключения (A, B, C)

0,1

А=Привод 0,1

B=принтер 0,1

C=Принтер по умолчанию 0,1

(C зависит от настройки B)

Ограничить максимальную глубину цвета SetColorDepthPolicy(X)SetColorDepth(Y)

Х=0,1

Y=1,2,3,4

Отключить следующее

SetClientProperty("AudioMapping", X) SetClientProperty("COMPortMapping", X) SetClientProperty("LPTPortMapping", X) SetClientProperty("ClipboardMapping", X) SetClientProperty("WindowsPrinterMapping", X)

Х=0,1

Таблица 3: Параметры RDP-TCP Значение WMI

Что ж, с этой информацией позади, давайте теперь обратим наше внимание на фактический полнофункциональный образец сценария, который объединяет все, что мы обсуждали до этого момента, в единый полезный инструмент. В качестве последнего предостережения: пожалуйста, не используйте этот образец сценария на своем производственном оборудовании. Сценарий можно скопировать в любой текстовый редактор и сохранить в виде файла.VBS для удобства использования. Объяснение атрибутов и их значений было вставлено в сценарий с использованием стандартных разделов «КОММЕНТАРИЙ» для VBScript. Обратите внимание, что поскольку вы «тестируете» этот скрипт и уточняете настройки так, как вам нужно, некоторые комбинации настроек скрипта приведут к сбою скрипта. Прежде чем вы напишете мне письмо, я бы посоветовал вам попытаться «настроить» те же параметры в GUI Tool. Чтобы четко понять этот момент, вы не можете ОТКЛЮЧИТЬ виртуальный канал CLIENT DRIVE и ожидать, что сценарий сможет включить «Подключить клиент, управляющий входом в систему…». Помните, если это комбинация, которая не будет работать в графическом интерфейсе., это не будет работать через скрипт.

стрКомпьютер = «.»
Установите objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}\" & strComputer & " ootcimv2")

'************************************
НАСТРОЙКИ СЕРВЕРА ТЕРМИНАЛЬНЫХ СЛУЖБ
'************************************

Установите colItems = objWMIService.ExecQuery («Выберите * из Win32_TerminalServiceSetting»)

Для каждого объекта в colItems
objItem.ActiveDesktop = 1 'ВКЛЮЧИТЬ Active Desktop
objItem.UserPermission = 1 'ВКЛЮЧИТЬ ослабленную безопасность
errResult = objItem.SetSingleSession(1) 'DISABLE Ограничить каждого пользователя одним сеансом
errResult = objItem.SetPolicyPropertyName("DeleteTempFolders",1) 'ОТКЛЮЧИТЬ Удалить временные папки
errResult = objItem.SetPolicyPropertyName("UseTempFolders",1) 'ОТКЛЮЧИТЬ использование временных папок
objItem.Put_
Следующий






'******************************************************
ВКЛАДКА «ОБЩИЕ» НАСТРОЙКИ ПОДКЛЮЧЕНИЯ К УСЛУГАМ ТЕРМИНАЛА
'******************************************************
Установите colItems = objWMIService.ExecQuery («Выберите * из Win32_TSGeneralSetting»)


Для каждого объекта в colItems
objItem.Comment = «Соединение, измененное сценарием» 'Редактирует значение комментария
errResult = objItem.SetEncryptionLevel(2) 'Устанавливает требуемое шифрование в CLIENT COMPATIBLE
objItem.WindowsAuthentication = 0 'ОТКЛЮЧАЕТ использование стандартной аутентификации Windows
objItem.Put_
Следующий




'******************************************************
ВКЛАДКА «НАСТРОЙКИ ПОДКЛЮЧЕНИЯ К УСЛУГАМ ТЕРМИНАЛА»
'******************************************************
Установите colItems = objWMIService.ExecQuery («Выберите * из Win32_TSLogonSetting»)


Для каждого объекта в colItems
errResult = objItem.SetPromptForPassword(1) 'ВКЛЮЧАЕТ Всегда запрашивать пароль
objItem.ClientLogonInfoPolicy = 0 'ОТКЛЮЧАЕТ использование предоставленной клиентом информации для входа
objItem.Put_
errResult = objItem.ExplicitLogon("Имя пользователя", "Домен", "Пароль") 'Задает информацию для входа
Следующий




'******************************************************
ВКЛАДКА «НАСТРОЙКИ ПОДКЛЮЧЕНИЯ К УСЛУГАМ ТЕРМИНАЛА»
'******************************************************
Установите colItems = objWMIService.ExecQuery («Выберите * из Win32_TSSessionSetting»)


Для каждого объекта в colItems
objItem.TimeLimitPolicy = 0 'ВКЛЮЧАЕТ переопределение соединения для настроек времени
objItem.Put_ 'Зафиксирует переопределение, чтобы другие настройки прошли без ошибок
errResult = objItem.TimeLimit("DisconnectedSessionLimit", 60000) 'Отключено на 1 минуту
errResult = objItem.TimeLimit("ActiveSessionLimit", 3600000) 'Активен в течение 1 часа
errResult = objItem.TimeLimit("IdleSessionLimit", 600000) 'Бездействие в течение 10 минут
objItem.BrokenConnectionPolicy = 0 'ВКЛЮЧАЕТ переопределение соединения для разорванных соединений
errResult = objItem.BrokenConnection(1) 'ЗАВЕРШАЕТ разорванные соединения
objItem.ReconnectionPolicy = 0 'ВКЛЮЧАЕТ переопределение Connectin для переподключения сеансов
objItem.Put_
Следующий









'****************************************************** ****
ВКЛАДКА «НАСТРОЙКИ ПОДКЛЮЧЕНИЯ УСЛУГ ТЕРМИНАЛА»
'****************************************************** ****
Установите colItems = objWMIService.ExecQuery («Выберите * из Win32_TSEnvironmentSetting»)


Для каждого объекта в colItems
objItem.InitialProgramPolicy = 0 'ВКЛЮЧАЕТ переопределение соединения
objItem.Put_
errResult = objItem.InitialProgram("%systemroot% otepad.exe","%homedir%") 'SETS Исполняемый и рабочий каталог
Следующий



'****************************************************** *******
'НАСТРОЙКИ ПОДКЛЮЧЕНИЯ УСЛУГ ТЕРМИНАЛА ВКЛАДКА УДАЛЕННОГО УПРАВЛЕНИЯ
'****************************************************** *******
Установите colItems = objWMIService.ExecQuery («Выберите * из Win32_TSRemoteControlSetting»)


Для каждого объекта в colItems
objItem.RemoteControlPolicy = 0 'ВКЛЮЧАЕТ переопределение соединения
objItem.Put_
errResult = objItem.RemoteControl(2) 'РАЗРЕШАЕТ УДАЛЕННЫЙ ВВОД, БЕЗ УВЕДОМЛЕНИЯ ПОЛЬЗОВАТЕЛЯ
Следующий



'****************************************************** ********
'НАСТРОЙКИ ПОДКЛЮЧЕНИЯ К УСЛУГАМ ТЕРМИНАЛА ВКЛАДКА НАСТРОЙКИ КЛИЕНТА
'****************************************************** ********
Установите colItems = objWMIService.ExecQuery («Выберите * из Win32_TSClientSetting»)


Для каждого объекта в colItems
objItem.ConnectionPolicy = 0 'ВКЛЮЧАЕТ переопределение соединения
objItem.Put_
errResult = objItem.ConnectionSettings(0,0,0) 'ОТКЛЮЧАЕТ Диск, Принтер, Принтер по умолчанию (в соответствии с заказом)


objItem.SetColorDepthPolicy(0) 'ВКЛЮЧАЕТ переопределение соединения
objItem.Put_
objItem.SetColorDepth(3) 'УСТАНАВЛИВАЕТ глубину цвета на 16 бит (1=8 бит, 2=15 бит, 3=16 бит, 4=32 бит)

errResult = objItem.SetClientProperty("AudioMapping", 1) 'ОТКЛЮЧАЕТ аудио
errResult = objItem.SetClientProperty("COMPortMapping", 1) 'ОТКЛЮЧАЕТ COM
errResult = objItem.SetClientProperty("LPTPortMapping", 0) 'РАЗРЕШАЕТ LPT
errResult = objItem.SetClientProperty("ClipboardMapping", 0) 'РАЗРЕШАЕТ буфер обмена
errResult = objItem.SetClientProperty("WindowsPrinterMapping", 0) 'РАЗРЕШАЕТ принтеры Windows
errResult = objItem.SetClientProperty("DriveMapping", 1) 'ОТКЛЮЧАЕТ диски
Следующий





'****************************************************** **********
'НАСТРОЙКИ ПОДКЛЮЧЕНИЯ СЛУЖБ ТЕРМИНАЛА ВКЛАДКА СЕТЕВЫЕ АДАПТЕРЫ
'****************************************************** **********
Установите colItems = objWMIService.ExecQuery («Выберите * из Win32_TSNetworkAdapterSetting»)


Для каждого объекта в colItems
objItem.MaximumConnections = 30 'ВКЛЮЧАЕТ МАКСИМАЛЬНОЕ количество подключений -1=НЕОГРАНИЧЕННО
objItem.Put_
Следующий


'****************************************************** ****
'ВКЛАДКА РАЗРЕШЕНИЯ НАСТРОЙКИ ПОДКЛЮЧЕНИЯ К УСЛУГАМ ТЕРМИНАЛА
'
'В этом разделе нет примера кода из соображений безопасности
'и ограничения текущего провайдера WMI
'
'Тем не менее, одна ДЕЙСТВИТЕЛЬНО полезная функция - это способность
'для сброса разрешений на подключение к заводским настройкам по умолчанию
как показано ниже
'****************************************************** ****
Установите colItems = objWMIService.ExecQuery («Выберите * из Win32_TSPermissionsSetting»)









Для каждого объекта в colItems
errResult = objItem.RestoreDefaults()
Следующий

Wscript.echo «Сервер служб терминалов и параметры подключения оптимизированы»

Вывод

Опять же, мы раскрыли больше возможностей сценариев для служб терминалов. Этот образец сценария и статья были написаны, чтобы дать вам ВКУС власти, подобной тем маленьким крошечным ложкам в кафе-мороженом по соседству. Достаточно одной идеи, чтобы знать, что вам нравится, и достаточно, чтобы подсадить вас на покупку галлона! В следующем выпуске мы рассмотрим сценарии специально для серверов презентаций (то есть Citrix!). Несмотря на то, что в этой статье мы в значительной степени изучили возможности WMI для сервера служб терминалов и параметров подключения, на самом деле мы лишь коснулись того, что может предоставить WMI. Для получения дополнительной информации обратитесь к онлайн-базе знаний Microsoft о сценариях WMI для служб терминалов по адресу http://www.microsoft.com/technet/scriptcenter/scripts/ts/default.mspx и http://msdn.microsoft.com/library. /default.asp?url=/library/en-us/termserv/termserv/terminal_services_wmi_provider_classes.asp.

  • Сценарии для серверных вычислений: Часть 3 — Сценарии Citrix Presentation Server