В Windows Server 2012 консоль Server Manager работает таким образом, что при попытке публикации приложения RemoteApp, для которого выбран исполняемый файл расположенный на общем сетевом ресурсе, возникает грозное уведомление о том, что мы можем выбирать исполняемые файлы расположенные только на каком-то конкретном сервере RD Session Host (RDSH)…
На самом деле это не так, и мы вполне можем выполнить публикацию исполняемого файла расположенного в сети с помощью командлетов PowerShell из модуля RemoteDesktop…
Рассмотрим публикацию приложения RemoteApp с помощью PowerShell на примере КонсультантПлюс. Но сначала сделаем небольшое отступление в сторону описания особенностей использования КонсультантПлюс в распределённой многопользовательской среде. В нашем примере исполняемый файл этого приложения (cons.exe) расположен вместе с файлами правовых баз данных в общем сетевом каталоге. Нам нужно опубликовать это приложение для пользователей фермы RDS состоящей из нескольких серверов. В ферме RDS используется механизм перемещаемых профилей Roaming User Profiles. Наше приложение для сохранения пользовательских настроек использует специальные служебные каталоги \ConsUserData. Поэтому, учитывая нашу специфику перемещаемых профилей, создадим специальный ярлык (*.lnk) для запуска КонсультантПлюс в ферме RDS в режиме RemoteApp.
Дадим ярлыку имя, например CONS_RemoteApp.lnk и разместим его в той-же сетевой папке, где расположен сам исполняемый файл приложения. В качестве рабочей папки обязательно укажем значение ссылающееся на переменную %AppData% которая указывает на часть пользовательского профиля, которая обрабатывается механизмом Roaming User Profiles (это позволит нам добиться того, что при входе на любой сервер фермы RDS, пользователь будет иметь одни и те же настройки в КонсультантПлюс)
Так как с свойствах ярлыка мы указали каталог (%AppData%\ConsUserData), которого не существует для вновь создаваемых профилей пользователей, нам придётся позаботиться о его создании, например с помощью Group Policy Preferences (GPP). Создадим в групповой политике применяемой к пользователям на серверах RDS соответствующую настройку GPP в разделе
User Configuration\Preferences\Windows Settings\Folders
Теперь всё что нам остаётся сделать, это опубликовать созданный ярлык с помощью PowerShell:
Import-Module RemoteDesktop New-RDRemoteApp -Alias ConsultantPlus ` -DisplayName "Консультант Плюс" ` -FilePath "\\FileServer\ConsultantPlus\CONS_RemoteApp.lnk" ` -IconPath "\\FileServer\ConsultantPlus\cons.exe" -IconIndex 0` -ShowInWebAccess 1` -collectionname "KOM-AD01-RDCOLL"` -ConnectionBroker "KOM-AD01-RDS21.holding.com"
Если мы включаем признак публикации приложения на веб-странице RD Web Access и при этом там используются папки, то указать папку в которую нужно разместить ярлык можно добавив к команде ключ:
-FolderName "Бизнес приложения"
Если необходимо ограничить доступ к публикуемому приложению, то к команде можно добавить ключ определяющий перечень доменных групп безопасности:
-UserGroups @("KOM\Accountants","KOM\Lawyers")
Практика показывает, что на текущий момент, опубликованное таким образом приложения отображаются в консоли Server Manager , но при попытке сохранить изменение их свойств возникает ошибка…
Поэтому, если потребуется изменить свойства такого RemoteApp приложения, путь один – PowerShell.
Вот это я понимаю мастер класс, сразу видно что пришлось по...возится с консультантом.
"Так как с свойствах ярлыка мы указали каталог (%AppData%\ConsUserData), которого не существует для вновь создаваемых профилей пользователей"
-Может более элегантно сделать папку ConsUserData в C:\Users\Default\AppData\ на всех серверах RDSH ??
Тогда для каждого нового пользователя будет создаваться папка без групповой политики.
Зачем заморачиваться с дефолтным профилем, который к тому же, как мы понимаем, обработает ситуацию лишь с созданием новых профилей. Достаточно сделать один параметр GPP и он будет "причёсывать" как нам надо и существующие профили и вновь создаваемые.
Я просто не сторонник "лишних" ГП, на мой взгляд это усложняет управляемость и документирование.
Меня позвали однажды за небольшую денежку "починить" домен. Админ который его создал проработал лет 10 там. Вот где были авгиевы конюшни с групповыми политиками - плюс товарищ очень любил скрипты, WMI фильтры, loopback. Половина политик не работает, ....в общем я вежливо откланялся.
также есть еще возможность создать папку в ALLUSERS
Ну это не говорит о том, что дела с методикой использования GPO обстоят везде таким же образом. Например у меня в регионе 7 крупных территориально разрозненных структурных подразделений со своими локальными администраторами и сотнями компьютеров и десятками серверов. Вся инфраструктура региона управляется менее чем десятком GPO. При этом в других регионах администраторы плодят по 30 политик. При максимально плотном использовании механизмов GPP можно сократить как минимум в двое-трое все GPO почти в 100% ситуаций. Как говорится, было бы желание. Простой пример из практики. Один администратор использует для настройки параметров WSUS на клиентах в пяти структурных подразделениях (в каждом свой WSUS сервер) - пять групповых политик, а другой всё настроит одной политикой (как например здесь https://blog.it-kb.ru/2011/10/12/wsus-client-management-with-gpp-group-policy-preferences/).
Именно поэтому лишних GPO не бывает, бывают "недопиленные".
Теперь по существу вопроса - использовать один раз сделанную настройку в GPP куда удобней, чем колупать каталоги дефолтных профилей на нескольких серверах, да ещё и постараться про них не забыть когда в ферму RDS добавляются новые сервера.
вопрос только в том, сколько тысяч настроек в 10 GPO.
Глупости какие-то :) Что-то вы совсем всё драматизируете до крайней степени.
а можно как-то скайп или почту вашу узнать, есть вопросик.
Мылбокс указан в нижнем колонтитуле.
PS: Начинаю задумываться о том, а не замутить ли нам форум :)
Парни, так в Ремоут_апп на Вин2012 глюки с модальными окнами все еще присутствуют? Как ведет себя 1С 8.х и офис2010/2013 в Ремоут_апп ???
"Однако, мало кто знает, что в большинстве случаев проблема решалась с помощью пакета исправлений, который вышел в конце мая прошлого года и доступен по ссылке - http://support.microsoft.com/kb/2384602/ru.
К сожалению, содержимое патча не попало в релиз SP1 для Windows 7 и Windows Server 2008 R2 и было выпущено отдельно, однако сейчас можно пользоваться объединенным декабрьским пакетом исправлений, который подходит как для RTM-версии, так и для SP1-версии ОС. Также туда вошли исправления для ряда других артефактов RDP, не связанных с модальными окнами. Скачать данный пакет исправлений можно по ссылке - http://support.microsoft.com/kb/2604066" http://blogs.technet.com/b/ai/archive/2012/01/16/remoteapp.aspx
Доброго времени суток. RDP сервер один, брокер не установлен. Опубликованное в графике приложение вижу и запускаю. При попытке добавить приложение через PS получаю ошибку: Установка служб удаленных рабочих столов не существует на *. Эту операцию можно выполнить после его создания. Подскажите, в чем может быть проблема?
решение - запускать PS от имени администратора
Относится ли данная проблема к серверам RDP на базе Windows Server 2008 R2? Или речь только о 2012?
Не понял вопроса. Про какую проблему речь?
имелось ввиду
"...при попытке публикации приложения RemoteApp, для которого выбран исполняемый файл расположенный на общем сетевом ресурсе, возникает грозное уведомление о том...." и, соответственно, необходимость
использования Powershell в качестве обходного маневра..
В статье идет речь о сервере 2012. Будет ли возникать такая ситуация при использовании 2008R2?
В WS2008R2 управление публикацией приложений RemoteApp организовано совершенно по другому и этот пост к этой системе не имеет никакого отношения.
Спасибо за оперативность
Если у Вас остаются дополнительные вопросы то можно попробовать обсудить их на нашем форуме.
Алексей, добрый вечер!
Цитата
"Создадим в групповой политике применяемой к пользователям на серверах RDS соответствующую настройку GPP в разделе User Configuration\Preferences\Windows Settings\Registry"
У меня нет под рукой английской версии, но мне кажется, нужно использовать не Registry, а Folders.
Поправьте меня, если не так.
Ваша правда, Сергей. Исправил.
Очень хочется сделать как в статье - но именно создание RemoteApp на .lnk не получается.
Ввожу параметры нажимаю Enter - PS говорит Обработка данных, бегут oooooooo и ошибка "Указанное значение AppPath недопустимо" параметр вроде называется FilePath ну да надеюсь он именно об нем ругается (https://technet.microsoft.com/ru-ru/library/jj215450.aspx)
PS C:\Windows\system32> New-RDRemoteApp
Командлет New-RDRemoteApp в конвейере команд в позиции 1
Укажите значения для следующих параметров:
CollectionName: QuickSessionCollection
DisplayName: Cons2015
FilePath: "D:\Cons\ConsRemoteApp.lnk"
New-RDRemoteApp : Указанное значение AppPath ("D:\Cons\ConsRemoteApp.lnk") недопустимо. Укажите допустимый путь к файлу
.
строка:1 знак:1
+ New-RDRemoteApp
+ ~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [Write-Error], WriteErrorException
+ FullyQualifiedErrorId : Microsoft.PowerShell.Commands.WriteErrorException,New-RDRemoteApp
Пробовал и так и другие
FilePath: "D:\\Cons\\ConsRemoteApp.lnk"
New-RDRemoteApp : Указанное значение AppPath ("D:\\Cons\\ConsRemoteApp.lnk") недопустимо. Укажите допустимый путь к фай
лу.
строка:1 знак:1
+ New-RDRemoteApp
+ ~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [Write-Error], WriteErrorException
+ FullyQualifiedErrorId : Microsoft.PowerShell.Commands.WriteErrorException,New-RDRemoteApp
PS C:\Windows\system32> New-RDRemoteApp
Командлет New-RDRemoteApp в конвейере команд в позиции 1
Укажите значения для следующих параметров:
CollectionName: QuickSessionCollection
DisplayName: Cons2015delete
FilePath: "D:\Cons\Cons.exe"
New-RDRemoteApp : Указанное значение AppPath ("D:\Cons\Cons.exe") недопустимо. Укажите допустимый путь к файлу.
строка:1 знак:1
+ New-RDRemoteApp
+ ~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [Write-Error], WriteErrorException
+ FullyQualifiedErrorId : Microsoft.PowerShell.Commands.WriteErrorException,New-RDRemoteApp
Грустно, ведь через мастер работает публикация Cons.exe - но мастер не хочет .lnk
Покажите свой скрипт и скажите на какой версии ОС вы его выполняете.
Добрый день. Не подскажите - в чём засада? Сделал всё по вашему сценарию, всё добавилось, но - при попытке запустить Консультант - говорит что "Компьютеру не удалось подключиться к удалённому компьютеру".. Причём если запустить в командной строке \\Consultant\Consultant\ConsultantPlus.lnk - отлично запускается.. В сетевом окружении путь виден, пробую всё проделать заходя с правами админа.. Что я делаю не правильно?
С уважением, Павел
Спасибо большое, все получилось. Консультант через RemoteApp работает и пользователи могут кастомизировать свой интерфейс не боясь, что настройки слетят при входе на другой сервер фермы.
Алексей, а подскажите пожалуйста, как для всех пользователей распространить этот измененный ярлык на их рабочие столы? Это нужно для тех юзеров, кто и так сидит на удаленном рабочем столе и хочет запускать Консультант оттуда.
Обычный ярлык на exe-файл делает просто, но как там указать этот специальный параметр рабочей папки %AppData%\ConsUserData?
Спасибо.
А что мешает применить механизм GPP, о котором здесь сказано?
А в чем прелесть опубликовывать приложения через lnk на сетевом ресурсе? Я не понимаю :( Опубликовал cons.exe через RDWeb. В файле complect.cfg теперь можно использовать переменные окружения операционной системы. У меня, правда, всего один терминальный сервер, но в RDWeb можно указать место хранения профиля пользователя, соответственно в complect.cfg можно указать %UserProfile%\Consultant. К тому же не нужно расшаривать папочки консультанта. При первом запуске выходит стандартный диалог консультанта по поводу создания ярлыка и места хранения профиля (из complect.cfg). ОК - и все это создается на терминальном сервере, юзер и не увидит ничего.
Хотя, как я понимаю, описан вариант 2013 года.... У меня только вчера появилась задача по консультанту.
Без расшаривания К+ в ферме серверов RDS - никак.
Про файл BASEcomplect.cfg не знал. Добавлю здесь информацию о нём.
Источник: http://www.artiks.ru/consultant_text.php?id=8960
А поясните пожалуйста, почему "никак"? Вдруг мне придется разводить ферму. Спасибо.
Ну а как вы себе представляете одновременный доступ к К+ с нескольких серверов без расшаривания самого К+
Вы имеете ввиду то, что приложение должно быть установлено на каждом хосте фермы?
Нет. Я это не имею ввиду. К+ вообще не требует установки и прекрасно работает из шары.
Slowpoke mode .... off! :) По-видимому, придется раскидывать консультанта на каждый сервер фермы, как того требует Microsoft с любым приложением, опубликованном в ферме. Да, это лишнее место и лишний траф на обновления, но так требует мануал. Ваш вариант шарить конс+ лишает этих недостатков, но все же порождает новые, имхо - это секъюрность и/или дополнительные служебные учетные записи.
Здравствуйте, может поможете в решении вопроса. Домен, установлен win server 2012R2, на нём развернуто роль RDP и добавлены RemoteApp. Пользователи запускают локально programm.rdp и попадают в программу, всё работает корректно, но при сворачивании, сама программа сворачивается, но картинка остаётся на рабочем столе, спасает только обновление Рабочего стола. Как можно решить проблему?
У меня такое наблюдалось при подключении с Windows XP. С клиентов Windows 7 и выше таких проблем нет. Проблему решил созданием двух ферм - на Windows 8 для клиентов Windows XP и Windows 2012 R2 для Windows 7 и выше. Для каждого опубликованного приложения есть 2 ярлыка RDP, которые раздаются через GPP в зависимости от версии Windows.
Закралась ошибка - для клиентов Windows XP ферма конечно же на Windows Server 2008 R2
Вот тема для размышления. Необходимо внешним пользователям опубликовать 1С, да так, что бы не появлялось окно выбора базы, а сразу стартовала необходимая. Старт базы можно прописать в ярлыке 1С, это не проблема, а вот как опубликовать этот ярлычок? SMB наружу совсем не кошерно.
путь к базе 1С прописать в параметрах командной строки