2

現在、PowerShell モジュールについて学んでいます。.psd1 マニフェスト ファイルを使用している場合は、.ps1 スクリプト ファイルと .psm1 マニフェスト ファイルを使用するオプションがあります。なぜ両方が必要なのですか?

.psm1 を RootModule として設定し、.ps1 を ScriptsToProcess に設定して、両方のモジュールを作成し、いくつかの違いに注意しましたが、それらが何を合計するかはわかりません。

  • 両方に Write-Output ステートメントを追加すると、インポート時に .ps1 の出力が表示されますが、.psm1 の出力は表示されません。.psm1 の書き込み警告が表示されます。
  • モジュール プレフィックスに対してGet-Commandプレフィックスを実行すると、.psm1 の関数はモジュール名と共に一覧表示されますが、.ps1 ファイルの関数は空白のモジュール名で一覧表示されます。
4

1 に答える 1

1

Ps1 ファイルへの参照を配置するマニフェストのセクションによって、ファイルの実行方法が決まります。

あなたの場合:

  • ScriptsToProcess は、モジュールをインポートする前に、呼び出し元の環境で一覧表示された PowerShell スクリプトを実行します。これは、それらを準備スクリプトと考えさせます。
  • これは、ここにリストされているファイルが関数を含むことを意図していないためです。それはスクリプトであることを意味します。モジュールからアクセスできる追加機能が必要な場合は、いくつかのオプションがあります。

    1. それらを NestedModules にリストします
    2. それらをモジュールに含めます
    3. マニフェストのエクスポート セクションの関数にそれらをリストしてみてください。(私はこの方法を試していませんが、関数がどこにあるかに関係なく、希望どおりに機能することを理解しています。)
于 2013-09-01T13:52:18.587 に答える