【问题标题】:Noninteractive Remote Commands with Powershell使用 Powershell 的非交互式远程命令
【发布时间】:2015-02-26 22:51:16
【问题描述】:

我正在开发一个脚本,它使用 ssh 连接到 Windows 主机、运行 powershell 命令并解析输出。虽然我可以连接到主机并运行命令,但在我按下回车键之前,powershell 不会退出并将控制权返回给本地脚本。

目前,正在运行的具体命令是ssh HOSTNAME 'echo $(hostname)',并且ssh服务器配置为将远程执行请求传递给powershell -noninteractive -command CMD,其中HOSTNAME是windows主机的名称,CMD是远程要运行的命令(在本例中为 echo $(hostname))。

最终目标是让调用远程 powershell 命令的脚本完全以非交互方式运行,但目前这是不可能的,因为 powershell 命令不会以非交互方式运行。

如何让 powershell 以非交互方式运行远程命令?

【问题讨论】:

  • 您看到正确的响应了吗?请注意,您不应该在 powershell 的命令周围加上引号,-command 之后的唯一内容应该是您要运行的内容。
  • @Guvante 是的,我看到了正确的回复。我删除了引号,但这并没有改变它的行为。
  • 我尝试在本地运行您的示例命令,它会立即打印并退出。您确定您调用 powershell 的方法没有导致问题吗?
  • @Guvante 不,我不确定。我正在使用问题中提到的标志通过 ssh 调用 powershell,这似乎是阅读手册页等的正确标志。我倾向于认为问题出在 powershell 标志中,但我无法证明或反驳这一点。
  • 我也无法在本地重现该问题,但也许可以接受一种解决方法。尝试将其放在命令的末尾;kill $PID

标签: powershell remote-server non-interactive


【解决方案1】:

我已经解决了这个问题。虽然我还没有确定是什么导致了这个问题,但我至少可以通过在启动 ssh 连接的一侧将stdin 重定向到/dev/null 来解决这个问题。

$ ssh HOSTNAME "CMD" </dev/null

此解决方案根本不涉及 powershell,而是从连接的另一端处理症状。

【讨论】:

    猜你喜欢
    • 2017-12-15
    • 2014-02-23
    • 1970-01-01
    • 2020-11-26
    • 2012-11-18
    • 1970-01-01
    • 1970-01-01
    • 2023-04-05
    • 2010-10-01
    相关资源
    最近更新 更多