2009-07-22 5 views
8

いくつかの監視アプリケーションと、いくつかのサービスをポーリングするようスケジュールされなければならないタスクでは、従来、コンソールアプリケーションを使用してビジネスレイヤのいくつかのメソッドを呼び出したり、ファイルの場所/ ftpの場所をポーリングしたりしていました。コンソールアプリケーションよりPowershellスクリプトのメリットは何ですか?

私が実行していた別のタスクでは、私はPowershellを使い始めました。かなり感心しました。私はPowershellスクリプトとコンソールアプリケーションのメリットを考えました。

powershellスクリプトは、再コンパイルせずに編集することができますが、これは潜在的な変更に対してプラスになりますが、私が見ていない欠点があるはずです。

したがって、Powershellスクリプトのコンソールアプリケーションを交換する場合は、どうすればよいですか?

答えて

7

私はこのことを考える良い方法は、いつあなたがコンソールアプリケーションを選ぶと思いますか?

第三者への配布、またはソースコードの保護については、PowerShellは強力な候補者であると考えています。

ところで、PowerShellはCOMオブジェクトをすぐに操作できますので、タスクの自動化の面では、.NETとCOMベースのインフラストラクチャの間のグルーコードとして非常によく機能します。

2

あなたのケースは、Powershellが設計されたものにほぼ完璧にフィットしているようです。私が想像することのできる唯一の欠点は、Powershellが解釈され、コンパイルされず、スピードが最適化されておらず、むしろ使いやすさが少し遅いということです。

1

「アプリ」のサイズも考慮する必要があります。小さな単一のファイルでタスクを管理できる場合、PowerShellは素晴らしいソリューションです。それを超えたら、スクリプトの保守性と理解容易性、そして典型的なアプリケーションコードについて質問する必要があります。 (そしてソースコントロールは両方ともそこに保存されるべきであるので、方程式を入力すべきではありません!)

5

私にとって最大の利点は、コンパイルプロセスを失い、バイナリからロールアウトすることです。私はあなたに例を挙げます。私は、Visual Studioのプライベートアセンブリフォルダからいくつかのassampleを使用したアプリケーションをインストールしました。このアプリケーションは、バイナリをインストールし、コンパイルプロセス中にユニットテストを実行しました。 VS 2008が出たとき、私はリソースを変更し、再コンパイルしてから、すべてのビルドサーバにバイナリを公開する必要がありました。私はこれが愚かだと判断し、PowerShellに切り替えたので、今度は自分のスクリプトがvstのどのバージョンがインストールされており、最も高いバージョンのdllでロードされているかを調べる。これで、リフレクションやレイトバインディングなどを使ってアプリでこれを行うことができましたが、PowerSHellでははるかに簡単です。リリースエンジニアは、テキストエディタでバイナリを追加したり、必要なバイナリを削除したり。私はいつもPowerSHellを使っています...

1

V2の高度な機能では、本質的に自由なパラメータ解析の価値を過小評価しないでください。あなたが書いたすべての小さなコンソールアプリケーションと、そのコードのどれがパラメータの解析か何か面白い何かを考えてみてください。また、パラメータの解析をどのくらいうまく処理できるかについても考えてください。あなたは位置と名前付きのパラメータを扱いますか?パラメータの検証はどうですか?デフォルトのパラメータ値?レスポンスファイルはどうですか? Poshはレスポンスファイルを文字通りの意味でサポートしていませんが、V2では配列やハッシュテーブルのいずれかでパラメータをパッケージ化できるスプラット演算子があります。これは非常によく似た機能です。

私のスクリプトが巨大になって、私が呼び出している場合、ある時点でOTOH。NETコードをコマンドレット以上に使用するためには、作業を実行するコマンドレットを作成することを考え始めます。 VSデバッガはV2デバッグ機能よりも優れています。

関連する問題