2016-07-07 6 views
2

なぜこれが失敗するのか分かりませんが、* .dll APIを使用する必要があるときに何らかの理由で関数からAdd-Typeを呼び出すとコードが失敗します。モジュールに含まれる関数にAdd-Typeを追加

function Add-References 
{ 
    Add-Type -Path "C:\myDllPath.dll" 
    Add-Type -Path "C:\myDllPath2.dll" 
} 

私はこの機能がモジュールに含まれ、スクリプトによって呼び出されている点に注意してください...、関数はグローバル作るドット演算子を試してみました。私の目標は、私のスクリプトのすべてでこれらのパスをコピーしてコピーするのではなく、関数を使って参照を宣言することです。

答えて

2

あなたが受信しているエラーを含めると役立ちます。

しかし、私は代替提案:use the RequiredAssemblies key in your module manifest

は、アセンブリ(.dllファイル)は、モジュールが必要とするファイルを指定します。アセンブリファイル名を と入力します。 Windows PowerShellは、種類または形式を更新する前に、指定された アセンブリを読み込み、入れ子になったモジュール をインポートするか、 RootModuleキーの値で指定されたモジュールファイルをインポートします。

このパラメータを使用して、モジュール に必要なすべてのアセンブリをリストします。これには、 の書式を更新するためにロードするアセンブリ、またはFormatsToProcessまたは TypesToProcessキーにリストされているファイル(NestedModulesキーに バイナリモジュールとしても記載されています)をロードする必要があります。

+0

これは素晴らしいです!ありがとう。私はすぐに質問があります。私はモジュールMyModule.psm1を持っていますが、同じ命名規則MyModule.psd1を持つマニフェストを作成するのですか、またはMyModule.psm1をネストされたモジュールとして指定しますか?マニフェストの使い方はあまり明確ではありませんが、複数の類似モジュールのマニフェストを1つ作成し、マニフェストにモジュールをネストしてスクリプトにマニフェストをインポートすることを前提としています。 – TacoMaster6000

+1

@ user3812871マニフェストは同じ名前ですが、少なくとも典型的には、psd1拡張子( 'MyModule.psd1'は' MyModule.psm1'に対応します)を持ちます。マニフェストでは 'RootModule'が指定されていますので、理論的には別名を付けても構わないと思いますが、私はこれをお勧めします。 – briantist

関連する問題