代码之家  ›  专栏  ›  技术社区  ›  eric.christensen

python、powershell或其他?[关闭]

  •  32
  • eric.christensen  · 技术社区  · 15 年前

    Python、PowerShell和其他脚本环境有哪些优点?我们希望标准化我们的脚本,目前正在使用BAT和CMD文件作为标准。我认为python比这些更好,但同时也在研究PowerShell和其他脚本工具。

    这些脚本将用于触发进程,如wget等,以调用Web服务或其他需要使用特定参数以特定顺序运行的应用程序/工具。

    我们主要使用Windows堆栈,但将来很有可能需要支持Unix。

    8 回复  |  直到 6 年前
        1
  •  15
  •   Michael Dillon    15 年前

    Ironpython可以访问所有与其他.NET语言相同的.NET程序集,以便在Windows上编写依赖系统的脚本。但是,在Linux、Solaris、BSD或OS/X上也可以使用相同的Python知识编写类似的脚本。如果在Windows上使用标准的C python,则可以访问任何COM对象,并且可以直接将vba示例转换为python代码。Spambayes的Outlook插件就是一个很好的例子,说明了你可以用它走多远。 http://spambayes.sourceforge.net/

    python的最佳特性是“包含电池”的标准库,即使它不是与Ironpython一起分发的,但是如果您只从cpython将Ironpython指向已安装的库文件夹,那么大部分功能都可以工作。事实上,大多数纯Python库,即没有编译的C或C++模块,将与IrPython一起工作。在Windows上,您还可以选择通过cygwin.com安装python,这样您就可以使用许多通常只被视为Unix的模块。如果您必须维护跨平台脚本,并且您更喜欢每个操作系统的一致性而不是特殊情况编码,那么可以使用这种方法。

    如果你需要利用一些Java类,那么Jython允许你使用相同的Python语言,你可以利用它。将它与一个很好的消息队列系统(如rabbitmq)结合起来,您可以在多台机器上使用python、jython和ironpython脚本,所有这些脚本都可以协作完成任务。

    还有大量的第三方python模块可供选择,您可以花几个月时间在delicious.com上搜索,然后再没有新的发现。这意味着,当您不需要标准Python库中的某个部分时,Google通常会提供一个解决方案。

    用于编写脚本以替换bash、cmd和bat文件的一些有用的python模块是pexpect http://www.noah.org/wiki/Pexpect 和Python WMI http://timgolden.me.uk/python/wmi/index.html

    但是,最后,对于不需要任何特殊功能的简单简单简单的脚本,python也可以很好地工作…但是!

        2
  •  44
  •   wonea Ilya Smagin    6 年前

    如果你想替换windows系统中的cmd和bat脚本,python是一个很好的通用工具,也可以编写它来运行(l)inux系统中的脚本。它是一种非常好的、灵活的语言,可以处理许多您要处理的任务。

    也就是说,PowerShell是一个非常通用的工具,可以管理各种各样的Windows设备;它拥有.NET的所有功能,还有更多的接口可以连接到MS产品,如Exchange和Active Directory,后者是一个省时器。根据您的情况,您可能会比其他脚本语言更多地使用ps,这仅仅是因为MS产品提供了接口,而且我知道MS似乎已经承诺在许多产品中提供这些API。PowerShell安装在所有当前版本的Windows(Windows 7+、Windows Server 2008+)上,并且非常容易安装在旧版本上。

    为了解决脚本将用于启动其他进程的编辑问题,我认为在这种情况下,这两个工具中的任何一个都符合要求。如果您计划在脚本中添加任何管理性任务而不仅仅是服务调用,那么我建议您使用ps,但是如果您坚持您所描述的,那么python就很好了。

        3
  •  19
  •   JasDev    12 年前

    我们希望标准化我们的脚本,目前正在使用BAT和CMD文件作为标准。

    听起来Windows是您的主要环境。

    如果是这样,PowerShell将比Python好得多。

    • PowerShell包含在Windows中 服务器2008。不需要 在上部署/安装python运行时 每一个 新的服务器。
    • 整个与Microsoft服务器相关的软件(Exchange、Systems Center等)正在转换为PowerShell Cmdlet以实现功能和扩展。
    • 第三方供应商(如scom插件)也将使用PowerShell脚本/Cmdlet公开功能。

    我在python方面的经验比powershell丰富,但就微软生态系统而言,这篇文章是站在墙上写的:使用powershell。否则,您将违背粒度,在Python和其他所有Cmdlet之间不断地进行互操作。

    因为你能编码 import win32com.client 在Python中,它与Windows环境中的PowerShell不处于同等地位。

        4
  •  3
  •   jfs    15 年前

    如果您所做的只是生成许多特定于系统的程序,而没有或很少的编程逻辑,那么特定于操作系统的shell可能比完整的通用编程语言更好。

        5
  •  2
  •   Brent Newey    15 年前

    Python的一个优势是第三方库和广泛的内置标准库的可用性。在各种操作系统和环境中,您可以使用Python快速轻松地执行大量功能强大的操作。这就是我们在办公室使用python的原因之一,它不仅是一种脚本语言,而且还用于我们所有的数据库后端应用程序。

    我们还使用它来进行XML和HTML的刮削,使用elementtree和beautifulsoup,这是非常强大和灵活的特定于Python的库来完成这类工作。

        6
  •  2
  •   Rook    15 年前

    我觉得很难过,还没有人会觉得很好。

        7
  •  2
  •   wonea Ilya Smagin    6 年前

    问题有点含糊,但python比powershell更易于移植;然而,python在Windows上并不流行。但另一方面,我不相信PowerShell脚本可以在没有PowerShell的Windows计算机上工作。这意味着它们可能无法在老式的命令shell中工作。我认为您还可以找到更多关于Python的文档和库。

    PowerShell更像是bash,而不是像python这样的编程语言。

    也许你可以解释一下你想用脚本做什么,你可能会得到更好的答案。

        8
  •  1
  •   pokstad    15 年前

    如果您使用的是基于Web的脚本,那么ActiveState的ActivePython似乎对 Windows specific API's 这很适合您,而且它有大量用于进行基于Web的工作的可移植库。