尝试通过Cygwin/OpenSHH从Ubuntu主机执行命令到Windows客户端。在
ssh USER@HOSTNAME powershell -Command "& {Get-Host}"
输出:
^{pr2}$然而,当我在windows客户机中通过cygwin尝试相同的命令时,我得到了正确的输出。在
$ powershell -Command "& {Get-Host}"
Welcome to Powershell augmented with NaviNet tools.
Bootstrapped ScmToolsProjectConfiguration.
Name : ConsoleHost
Version : 2.0
InstanceId : 0b2e578e-50b9-42ab-a07c-0c4ef762ba0c
UI : System.Management.Automation.Internal.Host.InternalHostUser
CurrentCulture : en-US
CurrentUICulture : en-US
PrivateData : Microsoft.PowerShell.ConsoleHost+ConsoleColorProxy
IsRunspacePushed : False
Runspace : System.Management.Automation.Runspaces.LocalRunspace
运行此命令时,本地系统上的ssh程序将获取以下参数:
在执行
ssh
之前,本地shell将删除最后一个参数前后的双引号。ssh
然后将组成远程命令的三个参数串联成一个字符串:它将这个字符串发送到要执行的远程系统。远程系统没有按您希望的方式解释此字符串。在
您需要以这样一种方式发出命令:在发送到远程系统的命令版本中包含引号。这应该做到:
^{pr2}$试着逃离“,所以看起来像:
如果这不起作用,请尝试对{,}和/或&;进行转义。我认为这是一个逃避问题;)
编辑:
或者甚至尝试用\\\”来转义,结果是一个转义的“和一个\”。(不知道powershell是如何想要这个命令的,不熟悉它)
相关问题 更多 >
编程相关推荐