Как завершить работу скрипта Powershell при запуске из cygwin - PullRequest
3 голосов
/ 13 июня 2011

У меня есть скрипт Powershell .ps, который выполняет некоторые элементарные вещи на машине с Windows. Я вызываю этот скрипт с помощью ssh-ing на машине с Windows. На машине с Windows установлен Cygwin Open-SSh.

Проблема: скрипт выполняется, но не возвращается к сеансу SSH. Как получить сценарий powershell для завершения и возврата управления обратно в сеанс SSH?

Ответы [ 3 ]

4 голосов
/ 03 апреля 2012

Хорошее и простое решение здесь:

https://serverfault.com/questions/266535/how-to-run-a-powershell-script-from-cygwin-ssh-session#comment277301_266699

echo "\ n" | PowerShell .... и т.д .....

2 голосов
/ 26 августа 2011

Возможно, будет немного поздно с ответом, но у нас возникла похожая проблема после установки cygwin sshd для запуска команд powershell на сервере citrix с веб-сервера linux.

В итоге мы попали на эту страницу: http://epeleg.blogspot.com/2010/06/solution-to-powershell-never-exists.html

Что побудило нас создать пакетный файл с командой powershell внутри него и следующим синтаксисом:


%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe -Noninteractive -Command "& { "your powershell script and arguments here" }"<NUL
 

Мы просто запускаем пакетный файл вместо прямого вызова powershell, ииспользуйте% 1 в качестве переменной, если она нам нужна в пакетном файле.

0 голосов
/ 27 марта 2013

Решение Девнулла сработало для меня, но ключ был <NUL.

Я пытался выполнить команду Powershell через соединение Cygwin Openssh из сценария Perl на удаленной машине. Вместо того, чтобы создавать пакетный файл, я записываю команды Powershell в файл ps1, передаю его через scp, а затем выполняю его через ssh со следующим Perl:

my ($stdout,$stderr) = Net::SSH->new( "user@host" )->capture2( { timeout => $timeout }, "powershell -file $copied_ps1_file<NUL");
...