У меня есть 10-шаговый процесс, который я использую для отладки своего веб-приложения, который я хотел бы автоматизировать с помощью сценария PowerShell, который выполняет второй шаг до последнего шага, приведенного ниже:
- Запустите phpStorm и откройте проект моего веб-приложения,
- Запустите PuTTY и A. подключитесь к удаленному веб-серверу с помощью S SH -Tunneling, B. Войдите на удаленный веб-сервер в окно терминала, открытое PuTTY, C. Оставьте окно терминала открытым,
- Запустите браузер Chrome и A. Запустите немного javascript, чтобы создать x-debugging cook ie и B. Загрузите мою веб-страницу и позвольте мне выбрать некоторые настройки, которые я хочу использовать, когда эта страница переходит к моему веб-приложению.
Обычно я запускаю phpStorm, используя иконку на рабочем столе, но я хочу использовать скрипт PowerShell, делаю все остальное из шагов. Прямо сейчас, используя два пакетных / cmd-сценария DOS, я могу запустить PuTTY и войти в систему, используя один сценарий, а затем запустить Chrome и загрузить веб-страницу, используя другой сценарий. Оба этих скрипта имеют значки Windows на рабочем столе и работают правильно, когда я щелкаю по ним, но теперь я хотел бы объединить скрипты в один скрипт, который должен иметь возможность запускать PuTTY в фоновом режиме и Chrome в на переднем плане, а когда Chrome закрывается, убейте PuTTY.
Следующий Windows 10 скрипт PowerShell почти работает:
## Add Window's MessageBox framework
Add-Type -AssemblyName PresentationFramework
##
## The next line is supposed to force the MessageBox to float over anything
## else, but errors, so commented out.
##
## $form.TopMost = $True
try {
##
## Test the remote server connection, if it isn't able to connect then
## throw an exception, but this test doesn't work, so commented out.
##
## if ( -not ( Test-Connection -ComputerName 999.999.999.999:9000 -Quiet -Count 1 ) ) {
##
## throw 'Unable to connect with the remote server!'
##
## }
## else {
## Start PuTTY in SSH-Tunneling mode as root
$scriptBlock = {
C:\PROGRA~1\PuTTY\putty.exe -ssh root@999.999.999.999 -P 9000 -pw pppppppp
}
Start-Job -Name 'PuTTY' -ScriptBlock $scriptBlock
## Now start Chrome and load web-page
C:\PROGRA~2\Google\Chrome\Application\Chrome.exe --start-maximized http://www.webpage.com/app.html
## Wait until Chrome is closed, then kill PuTTY
Stop-Process -Name 'PuTTY'
## }
}
catch {
$msg = $_
[System.Windows.MessageBox]::Show( $msg, 'Unable to start PuTTY!', 'OK', 'Error' )
Write-Error $msg
}
##
## The next line is supposed to unforce the MessageBox from floating over
## anything else, but errors, so commented out.
##
## $form.TopMost = $False
Выше, когда я сказал, что скрипт почти работает, он на самом деле происходит сбой несколькими важными способами:
Закомментированный оператор if (-not (Test-Connection -ComputerName ... -Quiet -Count 1)) должен проверять, что Соединение может быть установлено с удаленным сервером, но оно не работает.
Команда Start-Job правильно запускает PuTTY в фоновом режиме и не может войти в систему с помощью PowerShell. Путь к исполняемому файлу использует соглашение коротких имен, потому что двойные кавычки вокруг имен с пробелами не работают.
В отличие от PuTTY, Chrome не блокирует скрипт, пока он работает, поэтому фоновый скрипт PuTTY убит. Вам также нужно запустить Chrome с коротким путем к имени.
Кто-нибудь может помочь с этими проблемами?
Спасибо.