Python,PowerShell还是其他?

时间:2009-12-02 18:26:44

标签: python powershell scripting

Python,PowerShell和其他脚本环境有哪些优势?我们希望标准化脚本,目前使用bat和cmd文件作为标准。我认为Python比这些更好,但我也在研究PowerShell和其他脚本工具。

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

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

8 个答案:

答案 0 :(得分:45)

如果您希望在Windows机器上替换CMD和BAT脚本,Python可以作为一个出色的通用工具,也可以编写为在(L)inux框中运行脚本。它是一种优秀,灵活的语言,可以处理你抛出的许多任务。

话虽如此,PowerShell是一款用于管理各种Windows机箱的多功能工具;它具有.NET的所有功能,还有更多的接口可用于MS产品,如Exchange和Active Directory,这些都是一个节省时间的工具。根据您的情况,您可能会因为MS产品可用的接口而比其他脚本语言更多地使用PS,而且我知道MS似乎已经承诺在许多产品中提供这些API。 PowerShell安装在所有当前版本的Windows(Windows 7 +,Windows Server 2008+)上,并且可以很容易地安装在旧版本上。

为了解决您的脚本将用于启动其他流程的编辑问题,我认为在这种情况下,任何一种工具都符合要求。如果你计划在脚本中添加任何管理任务而不仅仅是服务调用,我会推荐PS,但如果你坚持你所描述的,那么Python就是好的。

答案 1 :(得分:19)

  

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

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

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

  • PowerShell包含在Windows中 Server 2008.没必要 部署/安装Python运行时 每个新服务器。
  • 整个Microsoft服务器相关软件(Exchange,Systems Center等)正在转换为PowerShell cmdlet以实现功能和扩展
  • 第三方供应商(例如SCOM插件)也将使用PowerShell脚本/ cmdlet来公开功能

我在使用Python方面比使用PowerShell有更多经验,但就微软生态系统而言,写作是在墙上:与PowerShell一起使用。否则,你只会反对谷歌并不断在Python和其他人的cmdlet之间进行交互。

仅仅因为您可以在Python中编写代码import win32com.client并不能在Windows环境中与PowerShell保持平等。

答案 2 :(得分:15)

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

Python的最佳功能是“包含电池”标准库,即使这不是与IronPython一起发布的,如果您只是将IronPython指向CPython中已安装的库文件夹,其中大部分都可以使用。实际上,大多数纯Python库,即没有编译的C或C ++模块,都可以与IronPython一起使用。在Windows上,您还可以选择通过Cygwin.com安装Python,然后允许您使用通常被认为仅限UNIX的许多模块。如果您必须维护跨平台脚本并且您更喜欢每个操作系统的一致性而不是特殊情况编码,那么这可能是有用的。

如果您需要利用某些Java类,那么Jython允许您使用您知道的相同Python语言来利用它。将它与一个漂亮的消息排队系统(如RabbitMQ)相结合,您可以在多台计算机上配备Python,Jython和IronPython脚本,这些脚本都可以完成工作。

还有大量的第三方Python模块可供选择,您可以花几个月的时间浏览delicious.com,然后再用完新的发现。这意味着当您需要的东西不是标准Python库的一部分时,谷歌搜索通常会提供一些解决方案。

用于替换bash,CMD和BAT文件的脚本的一些有用的Python模块是PEXPECT http://www.noah.org/wiki/Pexpect和Python WMI http://timgolden.me.uk/python/wmi/index.html

但是,最后,Python也适用于不需要任何特殊功能的简单直接脚本......但是!

答案 3 :(得分:3)

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

答案 4 :(得分:2)

问题有点模糊,但Python比PowerShell更便携;但是,Python在Windows上并不普遍。但另一方面,我不认为PowerShell脚本可以在没有PowerShell的Windows机器上运行。这意味着它们可能无法在旧式cmd shell中运行。我想你也会为Python找到更多的文档和库。

PowerShell更像是Bash而不是像Python这样的编程语言。

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

答案 5 :(得分:2)

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

我们还使用它来进行XML和HTML抓取,使用ElementTree和BeautifulSoup,它们是非常强大且灵活的Python特定库,可用于此类工作。

答案 6 :(得分:2)

我觉得很难过没有人感觉好'Perl。

答案 7 :(得分:1)

如果你正在使用基于Web的脚本,那么ActiveState的ActivePython似乎有很多适合你的Windows specific API's支持,它有很多很棒的可移植库来进行基于Web的工作。