是换行吗?迅速的?究竟是什么?
尝试通过 plink 运行 powershell 并执行命令,但 plink 无法识别其完成并且会话挂起。最奇怪的是,该命令在通过 shell(通过 Putty)发送时成功执行。但是,当通过 plink 发送时,相同的命令会挂起......
有任何想法吗?
是换行吗?迅速的?究竟是什么?
尝试通过 plink 运行 powershell 并执行命令,但 plink 无法识别其完成并且会话挂起。最奇怪的是,该命令在通过 shell(通过 Putty)发送时成功执行。但是,当通过 plink 发送时,相同的命令会挂起......
有任何想法吗?
Telnet 几乎是一个原始的 TCP 连接。Putty 需要的只是来自服务器的响应。其余部分由 shell 和 SSH/Telnet 服务器控制。
当您的任务正在运行时,它不会返回命令提示符。
在 Linux、Unix 和 Mac OS X 上,您可以&
在命令后添加一个以在后台运行它并返回到命令提示符。
尝试在本地终端/命令外壳中运行它。你应该基本上看到同样的东西。
好的,我仍然不太确定问题出在哪里,但我通过 TeamCity 论坛找到了解决方法。
基本上,您想将一些随意的字符串和管道回显到您的 powershell 可执行文件中,如下所示:
echo 'executing powershell...' | C:\windows\system32\windowspowershell \v1.0\powershell.exe exit 1
因此,您的完整 plink 命令变为:
plink.exe user@someIp -i key.ppk -P 22 -batch -v "echo 'executing powershell...' | C:\windows\system32\windowspowershell\v1.0\powershell.exe exit 1"
NB。Plink 仍将使用此方法传递返回码和控制台输出。
链接到 TeamCity 论坛:
http://youtrack.jetbrains.net/issue/TW-6021
希望这可以帮助
我在另一个程序中遇到了同样的问题。我在最后一个命令之后使用了 >&2 (将输出重定向到 std err),这对我来说很好。
只需在远程shell脚本中添加“return XX”,它将返回值到本地控制台。plink 完成后,键入echo %errorlevel%
以查看返回码 XX。