web-dev-qa-db-ja.com

Python、PowerShell、その他?

Python、PowerShell、およびその他のスクリプト環境の利点は何ですか?スクリプトを標準化したいと考えており、現在標準としてbatおよびcmdファイルを使用しています。 Pythonはこれらよりも良いオプションだと思いますが、PowerShellやその他のスクリプトツールについても研究しています。

スクリプトは、wgetなどのプロセスをトリガーして、Webサービス、または特定のパラメーターで特定の順序で実行する必要がある他のアプリケーション/ツールを呼び出すために使用されます。

主にWindowsスタックで作業しますが、将来的にはUnixをサポートする必要がある可能性が十分にあります。

32
ecounysis

IronPythonは、Windowsでシステム依存のスクリプトを作成するために、他の.NET言語と同じ.NETアセンブリのすべてにアクセスできます。ただし、Pythonの同じ知識を使用して、Linux、Solaris、BSD、またはOS/Xで同様のスクリプトを作成できます。 Windowsで標準のC Pythonを使用する場合は、任意のCOMオブジェクトにアクセスでき、VBAの例をPythonコードに変換するのは簡単です。 SPAMBayes Outlookプラグインは、それをどこまで実行できるかを示す良い例です。 http://spambayes.sourceforge.net/

Pythonの最も優れた機能は、「バッテリーが含まれる」標準ライブラリです。これはIronPythonと共に配布されていませんが、CPythonからインストールされたライブラリフォルダーにIronPythonをポイントするだけで機能します。実際、ほとんどの純粋なPythonライブラリ、つまりコンパイルされたCまたはC++モジュールは、IronPythonで正常に動作します。 Windowsでは、Cygwin.comからPythonをインストールすることもできます。これにより、通常UNIXのみと見なされる多くのモジュールを使用できるようになります。これは、クロスプラットフォームスクリプトを維持する必要があり、OSごとに特殊なケースのコーディングではなく一貫性を好む場合に役立ちます。

いくつかのJavaクラスを活用する必要がある場合、Jythonでは、これを活用するために知っている同じPython言語を使用できます。これをRabbitMQのようなNiceメッセージキューイングシステムと組み合わせると、複数のマシン上で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は、特別な機能を必要としない単純でわかりやすいスクリプトでもうまく機能します...まだです!

15
Michael Dillon

Pythonは、WindowsボックスのCMDおよびBATスクリプトを置き換える場合に最適な汎用ツールとして機能し、(L)inuxボックスでスクリプトを実行するように作成することもできます。それは素晴らしく柔軟な言語であり、投げかけた多くのタスクを処理できます。

そうは言っても、PowerShellはあらゆる種類のWindowsボックスを管理するための驚くほど用途の広いツールです。これは.NETのすべての機能を備えており、ExchangeやActive DirectoryなどのMS製品へのインターフェースが多く、時間の節約になります。状況によっては、MS製品で利用できるインターフェイスのためだけに、他のスクリプト言語よりもPSを使用する可能性があります。MSは、多くの製品でこれらのAPIを提供することを約束しているようです。 PowerShellは、Windowsの現在のすべてのバージョン(Windows 7以降、Windows Server 2008以降)にインストールされており、古いバージョンにかなり簡単にインストールできます。

スクリプトが他のプロセスを起動するために使用されるという編集に対処するために、どちらのツールも目的に合うと思います。サービスコールだけでなく、管理のようなタスクをスクリプトに追加する予定がある場合は、PSをお勧めしますが、説明に固執する場合は、Pythonが適切です。

46
MattGWagner

スクリプトを標準化したいと考えており、現在標準としてbatおよびcmdファイルを使用しています。

Windowsが主流の環境のようです。

その場合、PowerShellはPythonよりもはるかに優れています。

  • PowerShellはWindows Server 2008に含まれています。展開/インストールする必要はありませんPythonランタイムevery新しいサーバーをロールインします。
  • Microsoftサーバー関連のソフトウェア全体(Exchange、Systems Centerなど)は、機能と拡張機能のためにPowerShellコマンドレットに移行しています
  • サードパーティベンダー(SCOMプラグインなど)も、PowerShellスクリプト/コマンドレットを使用して機能を公開します

私はPowerShellよりもPython=での経験が豊富ですが、Microsoftエコシステムに関する限り、PowerShellを使用して執筆を行っています。 Pythonと他のすべてのコマンドレットとの相互運用。

コーディングできるからといってimport win32com.client in Pythonは、Windows環境のPowerShellと同等の立場にありません。

20
JasDev

プログラミングロジックがまったくまたはほとんどないシステム固有のプログラムを大量に生成する場合は、完全な汎用プログラミング言語よりもOS固有のシェルの方が適している可能性があります。

3
jfs

私はまだ誰もPerlのことを気にしていないのが悲しいと思います。

2
Rook

質問は漠然としていますが、PythonはPowerShellよりもはるかに移植性がありますが、PythonはWindowsでは一般的ではありません。しかし、一方で、PowerShellがインストールされていないWindowsマシンでPowerShellスクリプトが機能しないと思います。つまり、昔ながらのコマンドシェルでは機能しない可能性があります。Pythonも。

PowerShellは、Pythonのようなプログラミング言語よりもBashに似ています。

おそらく、スクリプトで何をしたいのかを説明できれば、おそらくより良い答えが得られるでしょう。

2
jonescb

Pythonの利点の1つは、サードパーティライブラリと豊富な組み込み標準ライブラリを利用できることです。さまざまなオペレーティングシステムや環境でPythonを使用すると、多くの強力な操作をすばやく簡単に実行できます。これが私たちがここでPythonをスクリプト言語としてだけでなく、すべてのデータベースバックエンドアプリケーションにも使用している1つの理由です。

また、ElementTreeとBeautifulSoupを使用して、XMLとHTMLのスクレイピングにも使用します。ElementTreeとBeautifulSoupは、この種の作業に非常に強力で柔軟なPython固有のライブラリです。

2
Brent Newey

Webベースのスクリプトを使用している場合、ActiveStateのActivePythonは Windows固有のAPI を多くサポートしているようで、Webベースの作業を行うための優れたポータブルライブラリがたくさんあります。

1
pokstad