Как мы уже не раз писали, в VMware View 5 появилась новая возможность отключать функцию Build to Loseless (BTL) для доступа к виртуальным ПК. Ее отключение несколько ухудшает качество передаваемой картинки, зато существенно увеличивает быстродействие (снижение требований к каналу до 30%) и отклик элементов отображаемого рабочего стола пользователя. При этом можно регулировать различные параметры, определяющие качество картинки, FPS и другое средствами групповых политик.
Конфигурируются эти настройки через шаблон групповой политики (GPO) pcoip.adm, расположенный на сервере VMware View Connection Server в папке (там же лежат и другие шаблоны):
Самый актуальный для пользователей VMware View 5 вопрос - это как сделать так, чтобы при доступе из локальной сети предприятия (LAN) пользователь входил на десктоп с включенным BTL (в условиях, когда канал широкий), а при доступе из интернета (WAN, узкий канал) можно было бы BTL отключить для повышения производительности.
Средствами View Manager, к сожалению, этого сделать нельзя, поэтому Dwayne Lessner придумал вот такой способ.
Нам понадобится следующее:
Шаблон политики vdm_agent.adm – используем его для запуска VB-скрипта или сценария PowerShell при соединении пользователя (Connect или Reconnect)
Шаблон
pcoip.adm – используем его для установки параметров Frame Rate, Image quality и других.
Прежде всего, для проверки используемых настроек (включен BTL или выключен) можно использовать лог, находящийся в папке виртуального ПК по адресу :\ProgramData\VMware\VDM\logs (для Windows 7). Называется он pcoip_server*timestampOfConnection*.log.
Там будут подобные строчки:
02/02/2012, 22:04:16.737> LVL:0 RC: 0 MGMT_ENV :cTERA_MGMT_CFG::load_server_config_from_stores[1]: Did not process over-rideable pcoip defaults from registry.
Если пользователь соединился из внешней сети (WAN), то в этом ключе будет записано имя Security Server. Для сторонних брокеров соединений (например, F5) можно читать ключик:
Теперь Dwayne нам предлагает вот такой скрипт (вы можете написать его самостоятельно, например, на PowerShell, где он будет выглядеть элегантнее):
'Declare Environment Variables
Dim ViewBroker, BTL
'Set Environment Variables
Set WSHShell = CreateObject("WScript.Shell")
'Lookup values in registry and assign to variables
ViewBroker = WSHShell.RegRead("HKEY_CURRENT_USER\Volatile Environment\ViewClient_Broker_URL")
BTL = WSHShell.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Teradici\PCoIP
\pcoip_admin_defaults\pcoip.enable_build_to_lossless")
'Check Build to Lossess and if they are connecting to a security server
If ((ViewBroker = "External-Broker-Name") And (BTL = 1)) Then
WSHShell.RegWrite "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Teradici\PCoIP\
pcoip_admin_defaults\pcoip.enable_build_to_lossless","0","REG_DWORD"
'Test Message Box inform the user
MsgBox "Your Connected from a Remote Location, to get better performance please disconnect and connect to get optimal user experince. A new setting must be applied"
End If
'Check to see if they connected from home and turned BTL off but are now back on the LAN
If ((ViewBroker = "Internal") And (BTL = 0)) Then
WSHShell.RegWrite "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Teradici\PCoIP\
pcoip_admin_defaults\pcoip.enable_build_to_lossless","1","REG_DWORD"
'Test Message Box inform the user
MsgBox "Your Performance is optimized for a slow link. To have the best user experience disconnect your session and log back in. A new setting must be applied"
End If
Ну а дальше конфигурируете групповую политику, где прописываете VB или PowerShell скрипт в CommandsToRunOnConnect и Reconnect:
После этого, конечно, пользователю будет нужно делать Reconnect при смене сети LAN/WAN, но зато процесс будет частично автоматизирован. Остается вопрос - почему такую важную вещь VMware не сделала в GUI своего View? Ведь при работе через инет по медленным соединениям виртуальные ПК откровенно тормозят и без отключения BTL просто не обойтись.