【问题标题】:How can I remotely execute a commands on a Windows box as part of a build process?作为构建过程的一部分,如何在 Windows 机器上远程执行命令?
【发布时间】:2024-01-14 12:34:01
【问题描述】:

作为构建过程的一部分,如何在 Windows 机器上远程执行命令?

如果重要,我想从执行实际构建的 linux 机器启动命令。

提供一些背景...

作为构建过程的一部分,我目前正在开发的一个 Web 应用程序有一个系统,用于自动恢复 Linux 虚拟机,通过 ssh 连接到其中,安装软件,然后通过 Web 界面运行一组测试.我想为 Windows 做同样的事情,但我不确定在 Windows 机器上相当于 ssh-ing 是什么。

安装 Cygwin 以获取 sshd 不是一种选择(可能会导致系统拾取某种 cygwin 依赖项,而该过程旨在防止这种依赖关系),并且显然远程桌面之类的东西适合交互式使用,但不会帮助我编写脚本过程(据我所知)。

【问题讨论】:

    标签: windows testing build-automation


    【解决方案1】:

    无论如何我都会提到它(即使你说 cygwin 已经出局了)你可以使用的一件事是Fresshd。据我所知,它很轻巧,效果很好。除了需要安装以便它可以作为服务运行之外,它似乎没有其他依赖项。

    另一个选项是Powershell and WinRM,它允许您使用本机 .NET 进行 Windows 管理。不幸的是,我不知道你如何在不使用 VM 环境启动它的情况下真正让它在 linux 上工作。不过,它允许您编写进程脚本并将这些进程推送到要执行的远程机器。

    我在不同的商店看到使用的最后两个选项是 A) 将安装脚本推送到远程机器,然后以交互方式登录并启动它,或者 B) 推送安装脚本但确保机器开启启动(或首次登录)将始终运行“setup.bat”,它会检查应用程序的新版本并安装它。当然,两者都有其缺点。

    它们还有其他几种方式,但我不确定如何让它们为你工作。无人值守的 MSI 安装(或静默安装),但我对此没有任何经验。谷歌的前几个热门似乎是为您构建 MSI 文件的产品。

    希望对您有所帮助。

    【讨论】:

    • freesshd 看起来很有趣 - 它实际上是在拉扯一堆 cygwin 的东西吗?快速浏览似乎表明它只是一个 ssh 守护进程,它将执行 cmd.exe,这可能是完美的。
    • 我实际上不确定它在做什么。我想我在某个地方读到它是从头开始构建的,但这可能会使其他东西感到困惑。我有一些用户需要在 linux 和 windows 之间传输数据,并且在 SFTP 上运行良好,我没有尝试过 SSH 部分,但听到了一些好消息。
    【解决方案2】:

    如果 ssh-ing 不是唯一的选择,您可以查看 windows 安全文件传输工具。像winscp这样的东西可能会起作用。

    【讨论】:

    • 我不确定我将如何使用文件传输来执行命令 - 我想我可以让一些东西轮询目录并执行添加的文件或其他东西,但这是很多移动部件......
    最近更新 更多