我有一个Powershell .ps脚本,可以在windows机器中执行一些基本操作。我通过ssh到windows机器来调用这个脚本。 Windows机器上安装了cygwin Open-SSh。
问题:脚本已执行但未返回SSH会话。 如何让powershell脚本结束并将控制权返回给SSH会话?
答案 0 :(得分:4)
这里有一个简单明了的解决方案:
回音“\ 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");