我喜欢早晨闻到新机器的味道。
我正在自动化一个机器创建工作流程,该工作流程涉及我的基础架构中的几个独立系统,其中一些系统涉及 Solaris 主机上 15 年前的 perl 脚本、PXE 启动 Linux 系统和 Windows Server 2008 上的 Powershell。
我可以为每个单独的部分编写脚本,并且集成 Linux 和 Unix 自动化相当简单,但我不知道如何将 Powershell 脚本可靠地与其余流程结合在一起。
我希望该过程在 Linux 主机上开始,因为我认为它最终会成为一个驻留在 Apache 服务器上的 Web 应用程序,但如果它需要在 Windows 上开始,我对此犹豫不决。
我理想情况下希望执行让 Linux 在 Windows 上运行,但答案似乎是赛格威,尽管我感谢他们付出的所有努力,但感觉不错,如果你明白我的意思。它非常适合桌面,并且提供了很多功能,但我觉得 Windows 服务器应该像 Windows 服务器一样对待,而不是混杂的 Unix 机器(顺便说一句,这也是我反对 OSX 服务器的理由,而且它们实际上我使用 Linux 的 Linux 系统(例如 Unix)。无论如何,我不想使用 Cygwin,除非这是最后也是唯一的选择。
所以我想我要问的是,是否有办法从 Linux 在 Windows 机器上执行作业。无需 Cygwin。我愿意听取各种想法和建议,包括“看,白痴,每个人都在使用 Cygwin,所以忍一忍,接受它”。提前谢谢!
答案1
我花了好几个小时研究这个问题,最后归结为两个维亚选项(有很多不可行的选项):
- 构建一个 Windows 机器,使用 IIS 服务托管一个 WebAPI,该 WebAPI 既具有域名,又经过设置,以便 WinRM 会话能够正常工作。
- 赛格威
如果选择第二种方法,您将不得不费力地穿过 GNU/Posix 抽象层才能获得实际的 Windows 位。这确实限制了您能用它做的事情。
第一种选择基本上是在完整的本机堆栈 Windows 安装之上构建一个您自己编写的基于 Web 的抽象层。如果您愿意投入工作,Linux 主服务器只需进行大量 curl 调用即可完成需要做的事情。不过,当脚本是即发即弃时,这种方法效果最好,因为构建回调系统需要付出更多努力。
答案2
您还可以购买跨平台调度或工作流自动化软件,这些软件可以根据之前的操作甚至返回的结果启动许多主机上的本机脚本。大型企业使用 Tivoli、UC4、Espresso(现在是 CA dSeries)等软件来实现这一点,我也曾在需要做这种事情的大型企业中使用过它。仅供参考,这些软件通常对 Oracle 作业等功能提供本机支持,让您大致了解一下您可能需要支付的价格。
(在我过去的工作中,他们也使用 Cygwin,反正,这样当工作负载在平台之间移动时,他们就可以使用相同的 Perl 脚本而无需修改。非常有趣。)
您也可以尝试构建自己的项目,正如@sysadmin1138 所建议的那样;这将是一个有趣的项目,甚至可能最终变得足够强大以供使用,并且不会在凌晨 2 点第一次尝试财务出口失败时给您发寻呼。
答案3
我将使用 Powershell v3.0 中引入的 Powershell Web Access 功能。这使您可以从 Linux 主机使用 Powershell 脚本。
答案4
你希望事后有多么恶心,因为总是有 telnet :)
不过,说真的,为什么需要 Linux 服务器来调用 PowerShell 脚本?您可以重新设计您的工作流程,以便 Linux 服务器只需通过 tftp 将正确的 boot.wim 映像传送到 PXE 启动的主机吗?过去,我曾很幸运地在 Windows 文件服务器上保存了带有不同应答文件的 Windows 映像,并使用 Linux 主机上的 tftpd 传送了自定义 WinPE 启动映像。然后,您可以让应答文件调用正确的 PowerShell 脚本,而不必处理 Cygwin 之类的跨平台麻烦事。