5

最近、PowerShellスクリプトを使用して展開する必要のあるプロジェクトに取り組みました。さまざまなファイルに、多かれ少なかれ2000行をコーディングしました。それらのいくつかは一般的な方法に専念していましたが、それぞれに500行をコーディングした後、使用する方法や新しい方法を実装する必要があるかどうかを見つけるのは困難でした。

だから、私の質問は、PowerShell関数ライブラリを実装するための最良の方法は何ですか?

数行のコードでたくさんのファイルを持っているよりも、たくさんのコードでいくつかのファイルを持っている方が良いですか?

4

4 に答える 4

5

@MikeShepardからの答えは、概念的には進むべき道です。これに沿った実装のアイデアをいくつか紹介します。

  • 私は多くの言語のオープンソースライブラリを持っています。私のPowerShellAPIは、Mike Shepardが提案したように、トップレベルがさまざまなトピックに編成されているところから始まります。

  • 複数の関数(SvnSupportなど)を持つトピック(モジュール)の場合、各パブリック関数は、プライベートサポート関数と変数を含む個別のファイルに含まれるため、結合が増加し、結合が減少します。

  • トピック(モジュール)内の関数のコレクションをまとめるために、それらを個別に列挙することができます(@Thomas Leeが提案したように、ドットソーシングまたはマニフェストに含めることによって)。しかし、私の好みは、スコット・ムックから習得したテクニックです。次のコードを.psm1ファイルの内容全体として使用し、他の各関数を同じディレクトリ内の別々の.ps1ファイルに配置します。


Resolve-Path $PSScriptRoot\*.ps1 |
? { -not ($_.ProviderPath.Contains(".Tests.")) } |
% { . $_.ProviderPath }

実際、関数とモジュールについて言うことはもっとたくさんあります。興味のある読者は、Simple-Talk.comで公開されている私の記事「ウサギの穴のさらに下:PowerShellモジュールとカプセル化」が有用な出発点であることに気付くかもしれません。

于 2012-07-19T16:11:58.227 に答える
3

一般的なジョブ専用のすべてのスクリプトを保存できるモジュールを作成できます。

于 2012-07-19T08:16:50.910 に答える
0

@Christianの提案に同意し、モジュールを使用します。

使用する可能性のある1つの方法は、モジュールを複数のスクリプトに分割し、それらすべてを最終モジュールに含めることです。それらを.PSM1ファイルで明示的にドットソースするか、マニフェスト(.PSD1ファイル)でファイルを指定することができます。

于 2012-07-19T09:01:57.377 に答える
0

私は主題(大まかに、名詞)に基づいて複数のモジュールを持っている傾向があります。たとえば、MongoDBを処理する関数がたくさんある場合は、MongoDBモジュールがあります。これにより、必要に応じて簡単にセッションに取り込むことができますが、めったに使用しない一連の関数ですべてのセッションが乱雑になることはありません。一貫した命名規則により、何をインポートするかを簡単に知ることができます。たとえば、modMongoDB.psm1は覚えやすい名前になります。

ちなみに、3.0ではモジュールのロードを自動で構成できるため、プロファイルに多数のモジュールをプリロードする必要はありません。

于 2012-07-19T13:36:40.740 に答える