5

対応するモジュール マニフェストを含むカスタム PowerShell モジュールがあります。私のモジュールの 1 つのコマンドには、ハッシュ テーブルのハードコードされた配列があります。最初はこれで問題ありませんでしたが、ときどき戻ってこのハードコードされた配列に新しいハッシュ テーブルを追加する必要があり、配列がかなり長くなります。このようにデータを管理することは難しくなっています。私が実際にやりたいことは、このコレクションを外部リソース (CSV ファイルなど) に移動し、コマンドで CSV ファイルからデータを読み取らせることです。実際、これは私が最初から望んでいたことですが、これを行う方法を理解しなければならないほど苦痛になったのはつい最近のことです。

私の質問は、どうすればこれを行うことができますか? それともそれを行うことさえできますか?私はモジュール マニフェストについてかなり読んだことがありますが、マニフェスト ファイルで追加のリソースを指定する方法や、モジュールに対して「プライベート」になるような方法でそれらのリソースをロードする方法について説明したものを読んだことを思い出したことはありません。モジュールのフォルダーに CSV ファイルを他のすべての PowerShell ファイルと共にドロップするだけで、それを使用して見つけることができると思いますが、それはあまり「公式」ではないようです (そして、それが機能するかどうかは 100% 確信が持てません) $PSScriptRootさらに、そのようにすることで、マニフェストには、モジュールが適切に機能するために必要な他のリソースがあることを他の誰かに示唆するものは何もありません。

このようなもののベストプラクティスはありますか、それとも私はこれをすべて間違っていますか?

4

1 に答える 1

4

マニフェスト定義には、このためのキーがあります。これはFileListと呼ばれ、基本的にはファイルの配列です。コマンドレットによって生成される説明にNew-ModuleManifestは、「このモジュールにパッケージ化されたすべてのファイルのリスト」とあるので、それを使用時に指定しました。(.psm1 ファイルはマニフェストの別の場所にリストされているため、リストする必要はありませんでした。)

# List of all files packaged with this module
FileList = @(
   'script1.ps1',
   'script2.ps1',
   'Microsoft.Web.Publishing.Tasks.Dll',
   'transform.proj',
   'some_file.xml'
)

ファイルの場所については、$PSScriptRootあなたが提案したように、単に使用します。

私の知る限り、モジュールのインストールを自動的に処理するものはありません。PSModulePath環境変数のフォルダーに入れるのはあなた次第です。

于 2016-03-15T19:22:41.960 に答える