AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 438496
Accepted
Matt Simmons
Matt Simmons
Asked: 2012-10-16 05:19:43 +0800 CST2012-10-16 05:19:43 +0800 CST 2012-10-16 05:19:43 +0800 CST

将 Powershell 脚本与非 Windows 工作流集成的方法?

  • 772

我喜欢早上闻到新机器的味道。

我正在自动化一个机器创建工作流,它涉及我的基础架构中的多个独立系统,其中一些涉及 Solaris 主机上 15 年的 perl 脚本、PXE 引导 Linux 系统和 Windows Server 2008 上的 Powershell。

我可以编写每个单独部分的脚本,集成 Linux 和 Unix 自动化相当简单,但我不知道如何可靠地将 Powershell 脚本与其余进程联系在一起。

如果该进程在 Linux 主机上开始,我更愿意这样做,因为我认为它最终会成为一个运行在 Apache 服务器上的 Web 应用程序,但如果它需要在 Windows 上开始,我犹豫不决。

理想情况下,我希望 Linux 的psexec之类的东西能够在 Windows 上运行,但是Cygwin似乎给出了这个方向的答案,尽管我很欣赏他们付出的所有辛勤工作,但感觉从来都不对,如果你明白我的意思。它非常适合桌面并提供很多功能,但我觉得 Windows 服务器应该像 Windows 服务器一样对待,而不是混蛋的 Unix 机器(顺便说一句,这也是我反对 OSX 服务器的论点,它们实际上是Unix) . 无论如何,除非这是最后也是唯一的选择,否则我不想使用 Cygwin。

所以我想我要问的是是否有一种方法可以从 Linux 在 Windows 机器上执行作业。没有Cygwin。我对想法和建议持开放态度,包括“看白痴,每个人都使用 Cygwin,所以接受并处理它”。提前致谢!

linux
  • 8 8 个回答
  • 8239 Views

8 个回答

  • Voted
  1. Best Answer
    sysadmin1138
    2012-10-16T05:28:43+08:002012-10-16T05:28:43+08:00

    我花了几个小时研究这个问题,最终归结为两个可行的选择(那里有很多不可行的选择):

    1. 使用托管 WebAPI 的 IIS 服务构建一个 Windows 框,该 WebAPI 既是域化的,也是以这样一种方式设置的,即来自它的 WinRM 会话将起作用。
    2. Cygwin

    使用第二个选项,您将无法通过 GNU/Posix 抽象层获得实际的 Windows 位。这确实限制了你可以用它做什么。

    第一个选项几乎构建了一个基于 Web 的抽象层,您可以在完整的本机堆栈 Windows 安装之上自行编写。如果您愿意投入工作,Linux 主服务器只需执行一堆 curl 调用即可执行需要执行的操作。不过,当脚本是即发即弃时,这种方法效果最好,因为构建回调系统需要付出更多的努力。

    • 5
  2. mfinni
    2012-10-16T05:48:38+08:002012-10-16T05:48:38+08:00

    您还可以购买跨平台调度或工作流自动化软件,这些软件可以根据先前的操作甚至返回的结果在许多主机上启动本机脚本。大型企业使用 Tivoli、UC4、Espresso(现在是 CA dSeries)等软件来执行此操作,我已经在需要执行此类操作的大型企业中使用过它。仅供参考,这些通常对诸如 Oracle 作业之类的东西有原生支持,让您了解您可能正在查看的价格标签。

    (在我过去的工作中,无论如何他们也使用 Cygwin ,这样当工作负载在平台之间移动时,他们可以使用相同的 Perl 脚本而无需修改。很有趣。)

    正如@sysadmin1138 所建议的那样,您也可以尝试构建自己的;那将是一个有趣的项目,甚至可能最终变得足够强大,可以使用,并且不会在第一次尝试金融导出失败时让您在凌晨 2 点被传呼。

    • 3
  3. Roy Kaldung
    2012-10-17T04:26:51+08:002012-10-17T04:26:51+08:00

    我会使用 Powershell v3.0 中引入的 Powershell Web Access 功能。这允许您从 Linux 主机使用 Powershell 脚本。

    • 3
  4. longneck
    2012-10-16T05:26:13+08:002012-10-16T05:26:13+08:00

    PowerShell 服务器允许您通过 SSH 连接到 Windows 服务器并获取 PowerShell 控制台。我没有在免费试用后使用它,但我的非正式使用向我证明它是一个相当可靠的产品。

    • 2
  5. MDMarra
    2012-10-16T05:28:32+08:002012-10-16T05:28:32+08:00

    之后你想感觉有多恶心,因为总是有 telnet :)

    不过说真的,为什么需要 Linux 服务器来调用 PowerShell 脚本?您能否重新设计您的工作流程,以便 Linux 服务器通过 tftp 将正确的 boot.wim 映像传送到 PXE 引导的主机?过去我运气不错,在 Windows 文件服务器上保存了一个带有不同答案文件的 Windows 映像,并使用 Linux 主机的 tftpd 提供了一个自定义 WinPE 引导映像。然后,您可以让应答文件调用正确的 PowerShell 脚本,而不必像 Cygwin 那样处理跨平台问题。

    • 2
  6. rorr
    2012-10-16T06:48:26+08:002012-10-16T06:48:26+08:00

    您可以使用 nrpe 之类的东西在 Windows 主机上远程执行 powershell 脚本。您可能想修改您的 powershell 脚本以返回 nrpe 预期的退出代码,但没有理由不能从您的 linux 主机上的脚本调用 check_nrpe。

    • 2
  7. Greg Work
    2012-10-17T03:24:05+08:002012-10-17T03:24:05+08:00

    关于反直觉黑客,您是否考虑过将持续集成软件滥用为跨平台编排工具?

    在最方便的地方安装 CI master ,在你的 Windows 机器上安装代理( this或this),配置一个作业来执行你的 powershell 脚本(使用 Windows Batch 命令配置直接调用它,或者如果你想使用插件在 Windows 代理上编写/保留脚本在 CI 应用程序中)并通过 curl 或类似工具远程触发作业。

    • 2
  8. Ryan Fisher
    2012-10-27T22:02:04+08:002012-10-27T22:02:04+08:00

    我在一家大型企业工作,这个问题很常见。对于我们目前支持的进程,我们的方法是让 Unix 系统对在 IIS 上运行 ColdFusion 的“管理”Windows 服务器进行 Web 调用。我们有从 GET 请求触发的类和函数,这些请求使用“cfexecute”指令启动特定的 powershell 脚本。这很丑陋,但它有效。我们正在研究 powershell v3 Web 服务功能,以摆脱让 ColdFusion 充当中间人的角色。

    • 0

相关问题

  • Linux 主机到主机迁移

  • 如何在 Linux 机器上找到有关硬件的详细信息?

  • 如何在 Linux 下监控每个进程的网络 I/O 使用情况?

  • 在 RHEL4 上修改 CUPS 中的现有打印机设置

  • 为本地网络中的名称解析添加自定义 dns 条目

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve