通过SSH执行Powershell命令

2024-04-25 20:48:48 发布

您现在位置:Python中文网/ 问答频道 /正文

尝试通过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

Tags: hostgetubuntuwindows执行命令systemmanagementcommand
2条回答
ssh USER@HOSTNAME powershell -Command "& {Get-Host}"

运行此命令时,本地系统上的ssh程序将获取以下参数:

  • 在USER@主机名在
  • powershell
  • -命令
  • &;{获取主机}

在执行ssh之前,本地shell将删除最后一个参数前后的双引号。ssh然后将组成远程命令的三个参数串联成一个字符串:

  • powershell-命令{Get Host}

它将这个字符串发送到要执行的远程系统。远程系统没有按您希望的方式解释此字符串。在

您需要以这样一种方式发出命令:在发送到远程系统的命令版本中包含引号。这应该做到:

^{pr2}$

试着逃离“,所以看起来像:

ssh USER@HOSTNAME powershell -Command \"& {Get-Host}\"

如果这不起作用,请尝试对{,}和/或&;进行转义。我认为这是一个逃避问题;)

编辑:

或者甚至尝试用\\\”来转义,结果是一个转义的“和一个\”。(不知道powershell是如何想要这个命令的,不熟悉它)

相关问题 更多 >