2009-12-02 42 views
31

Python,PowerShell和其他腳本環境的優點是什麼?我們想標準化我們的腳本,並且目前使用bat和cmd文件作爲標準。我認爲Python會比這些更好,但我也在研究PowerShell和其他腳本工具。Python,PowerShell或其他?

這些腳本將用於觸發諸如wget等的進程來調用Web服務或其他應用程序/工具,這些應用程序/工具需要以特定順序以特定參數運行。

我們主要使用Windows堆棧,但我們很可能需要在未來支持Unix。

謝謝。

+0

什麼操作系統? – Bratch 2009-12-02 22:43:28

+1

這個問題有一些無用的答案。它要麼是擅長Python的人,要麼是擅長PowerShell的人......如果您正在與Active Directory進行交互,PowerShell是迄今爲止最簡單的方法。如果您正在編寫GUI應用程序或需要跨平臺支持 - 可能是Python。每種語言比另一種語言做得更好。 – 2017-09-15 18:29:16

回答

14

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庫的東西時,一些谷歌搜索通常會提供一個解決方案。

爲腳本,以取代慶典,CMD和BAT文件的一些有用的Python模塊Pexpect的http://www.noah.org/wiki/Pexpect和Python WMI http://timgolden.me.uk/python/wmi/index.html

可是,到了最後,Python的也工作得很好,對於不需要任何一個簡單的腳本特殊功能...還沒有!

+2

IronPython優於PowerShell的另一個優點是對於後備版操作系統,只要你已經存在.net,它就可以通過XCOPY部署來實現。 – 2009-12-02 22:37:50

1

這些問題有點含糊,但Python比PowerShell更便於攜帶;但是,Python在Windows上並不普遍。但另一方面,我不相信PowerShell腳本可以在沒有PowerShell的Windows機器上工作。這意味着它們可能無法在老式的cmd shell中工作。我想你會發現更多的Python文檔和庫。

Powershell更像是Bash,而不是像Python這樣的編程語言。

也許你可以解釋你想要對你的腳本做什麼,你可能會得到更好的答案。

+0

問題被編輯得更加清晰,所以我的答案可能看起來有點愚蠢。 – jonescb 2009-12-02 21:23:41

+0

爲什麼不編輯答案? – 2009-12-03 00:15:29

+0

你是錯的; PowerShell **是一種面向對象的編程語言**。您在可移植性方面也存在一定程度的錯誤 - 將powershell移植到UNIX環境中存在api – 2017-09-15 18:23:03

2

Python的一個優勢是第三方庫的可用性和廣泛的內置標準庫。您可以在各種操作系統和環境中使用Python快速輕鬆地完成許多強大的操作。這是我們在辦公室不僅將Python用作腳本語言,而且還用於我們所有數據庫後端應用程序的原因之一。

我們還將它用於XML和HTML抓取,使用ElementTree和BeautifulSoup,這些功能非常強大且靈活的Python特定庫用於此類工作。

44

如果您希望替換Windows盒子上的CMD和BAT腳本,並且還可以編寫腳本以在(L)inux框中運行腳本,則Python可作爲一款出色的通用工具。這是一種非常靈活的語言,可以處理許多任務。

這就是說,Powershell是一個令人驚訝的多功能工具,用於管理各種Windows盒子;它擁有.NET的所有功能,並且還有更多的接口用於MS產品,如Exchange和Active Directory,這是一個定時器。根據你的情況,僅僅因爲MS產品可用的接口,你可能會比其他腳本語言更多地使用PS,而且我知道MS似乎已經承諾在很多產品中提供這些API。 Powershell安裝在所有當前版本的Windows(Windows 7 +,Windows Server 2008+)上,並且可以很容易地安裝在舊版本上。

爲了解決您的編輯問題,您的腳本將用於啓動其他流程,我認爲在這種情況下,任何一種工具都適合該賬單。如果您打算在腳本中添加任何管理員任務而不僅僅是服務調用,那麼我會推薦PS,但是如果您堅持所描述的內容,那麼Python很好。

+4

+1均衡的答案。 – micahwittman 2009-12-02 22:24:46

+0

+1好的答案,但我認爲他需要指定他計劃執行的操作系統以獲得更好的答案。 – Bratch 2009-12-02 22:44:00

+0

我不能說Powershell,但Python是比VBA更好的腳本MS Word(通過OLE自動化)的方式。 – jfs 2009-12-02 22:51:58

2

我發現它很傷心沒人還沒有好的Perl'Perl。

+0

雖然PowerShell是它的後代之一。 – 2009-12-02 22:38:42

+0

PowerShell仍然在其根源中,並且通常只有7種以下(是的,我知道它可以安裝在xp上)。儘管Perl本身並不是windows本身,但我仍然覺得它更實用,因爲它適用於所有的Windows版本,並且它的許多可用性都是可移植的。更不用說那可能是任何人想要的東西已經完成了< - 稱之爲作弊:)(不是針對PS,只是佈置殘酷的現實)。 – Rook 2009-12-02 23:20:57

1

如果您正在使用基於Web的腳本,那麼ActiveState的ActivePython似乎對Windows specific API's有很多支持,它們將適合您,並且它具有許多優秀的用於執行基於Web工作的便攜式庫。

18

我們想標準化我們的腳本,並且目前使用bat和cmd文件作爲標準。

這聽起來像Windows是你的主流環境。

如果是這樣,PowerShell會比Python好得多。

  • PowerShell是包含在Windows Server 2008中無需 部署/上 安裝Python運行時,在每卷新服務器。
  • 整個微軟服務器相關軟件(兌換,系統中心,等)被轉換到PowerShell命令的功能和擴展
  • 第三方供應商(如SCOM插件)也將使用PowerShell腳本/ cmdlet來公開功能

我對Python有比PowerShell更多的經驗,但是就微軟生態系統而言,這篇文章就在牆上:使用PowerShell。否則,你只會對Python和其他人的cmdlet不斷進行交互。

僅僅因爲您可以在Python中使用import win32com.client代碼,並不會在Windows環境中與PowerShell保持同等的地位。

3

如果你所做的只是產生很多系統特定的程序,而沒有或很少有編程邏輯,那麼操作系統特定的shell可能是一個比完整的通用編程語言更好的選擇。