0

是换行吗?迅速的?究竟是什么?

尝试通过 plink 运行 powershell 并执行命令,但 plink 无法识别其完成并且会话挂起。最奇怪的是,该命令在通过 shell(通过 Putty)发送时成功执行。但是,当通过 plink 发送时,相同的命令会挂起......

有任何想法吗?

4

4 回答 4

1

Telnet 几乎是一个原始的 TCP 连接。Putty 需要的只是来自服务器的响应。其余部分由 shell 和 SSH/Telnet 服务器控制。

当您的任务正在运行时,它不会返回命令提示符。

在 Linux、Unix 和 Mac OS X 上,您可以&在命令后添加一个以在后台运行它并返回到命令提示符。

尝试在本地终端/命令外壳中运行它。你应该基本上看到同样的东西。

于 2010-06-04T16:34:39.073 回答
1

好的,我仍然不太确定问题出在哪里,但我通过 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

希望这可以帮助

于 2010-06-07T08:58:31.727 回答
1

我在另一个程序中遇到了同样的问题。我在最后一个命令之后使用了 >&2 (将输出重定向到 std err),这对我来说很好。

于 2010-09-28T10:12:04.853 回答
0

只需在远程shell脚本中添加“return XX”,它将返回值到本地控制台。plink 完成后,键入echo %errorlevel%以查看返回码 XX。

于 2010-11-01T03:36:30.123 回答