@dshumov
Олдскул - Фигурнов форева

Почему не подключается RemoteApp из под PowerShell?

Добрый вечер!
Есть идея скрипта, который делает следующее:
1) Создает VPN подключение
2) Подключается по VPN
3)Запускает RemoteApp
4)Ждет завершения/закрытия RemoteApp
5)Разрывает VPN подключение
6)Удаляет VPN подключение.
Вот скрипт:
Set-ExecutionPolicy -ExecutionPolicy Unrestricted
Add-VpnConnection -Name VTH_VPN -ServerAddress 1.1.1.1 -AllUserConnection -AuthenticationMethod MSChapv2 -PassThru -RememberCredential -TunnelType Pptp
rasdial VTH_VPN login password 
[Console]::outputEncoding =[System.Text.Encoding]::GetEncoding('cp866')
$p = start-process C:\VPN\vth.rdp -PassThru
$p.WaitForExit()
rasdial VTH_VPN /disconnect
Remove-VpnConnection -Name VTH_VPN -AllUserConnection -Force

Что получается:
1) Создает VPN подключение
2) Подключается по VPN
3) Пытается запустить RemoteApp, но в это же время рвет подключение VPN и удаляет его.
Соответственно, к моменту попытки запуск RemoteApp, VPN уже не существует, и запуск заканчивается неудачей.
Для отладки, решил заменить RemoteApp на приложение calc.exe - результат такой же. НО, если заменяю calc.exe на notepad.exe или просто на mstsc.exe скрипт отрабатывает на УРА.
Подскажите пожалуйста, где затык? Или подход в корне неправильный?
Я понимаю, что скажете, что не секурно в скрипте передавать логин и пароль - знаю. Но я планирую потом запаковать скрипт в exe-файл. Так что более менее немного защищенее получаеться.
Заранее спасибо.
  • Вопрос задан
  • 673 просмотра
Решения вопроса 1
@dshumov Автор вопроса
Олдскул - Фигурнов форева
Вопрос закрыт. Помогли на технете. Решение в следующем (если кому интересно): помимо mstsc, запускаеться еще процесс wksprt.exe (Среда выполнения для подключений к RemoteApp и удаленным рабочим столам) и необходимо было сделать проверку на wksprt.exe,т.к. видимо mstsc запускает его и стартует новый процесс итоговый скрипт получаеться таким:
Set-ExecutionPolicy -ExecutionPolicy Unrestricted
Add-VpnConnection -Name VTH_VPN -ServerAddress 1.1.1.1 -AllUserConnection -AuthenticationMethod MSChapv2 -PassThru -RememberCredential -TunnelType Pptp
rasdial VTH_VPN login password 
[Console]::outputEncoding =[System.Text.Encoding]::GetEncoding('cp866')
Start-Process mstsc -arg C:\VPN\vth.rdp -NoNewWindow -Wait
while (gps wksprt,mstsc -ea 0) {
	Start-Sleep -Sec 1
}
rasdial VTH_VPN /disconnect
Remove-VpnConnection -Name VTH_VPN -AllUserConnection -Force
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@azarij
В меру опытный никто
попробуйте заменить:

$p = start-process C:\VPN\vth.rdp -PassThru
$p.WaitForExit()

на:
start-process mstsc.exe -argumentlist "c:\vpn\vth.rdp" -wait

-passthru может нужен, а может и нет.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы