从cygwin运行时如何结束Powershell脚本

时间:2011-06-13 16:27:10

标签: powershell ssh cygwin

我有一个Powershell .ps脚本,可以在windows机器中执行一些基本操作。我通过ssh到windows机器来调用这个脚本。 Windows机器上安装了cygwin Open-SSh。

问题:脚本已执行但未返回SSH会话。 如何让powershell脚本结束并将控制权返回给SSH会话?

3 个答案:

答案 0 :(得分:4)

这里有一个简单明了的解决方案:

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

回音“\ n”| powershell ....等......

答案 1 :(得分:2)

可能有点迟,但是在安装了cygwin sshd从linux网络服务器上的citrix服务器上运行powershell命令后,我们遇到了类似的问题。

我们最终落在这个页面上: 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作为变量。

&lt; NUL在最后告诉powershell不要期望输入,并让它退回到ssh提示符。我希望这可以帮助你,或者有人falling这个帖子!

答案 2 :(得分:0)

Devnull的解决方案对我有用,但关键是<NUL

我试图通过远程计算机上的Perl脚本对Cygwin Openssh连接执行Powershell命令。我没有创建批处理文件,而是将Powershell命令写入ps1文件,通过scp传输,然后使用以下Perl通过ssh执行:

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