2016-07-05 13 views
1

PowerShell 5.0を使用していて、マルチファイルモジュールを作成しようとしています。スクリプトファイルの関数をPowerShellモジュールに組み込む方法

/FooModule 
--- FooModule.psd1 
--- FooModule.psm1 
--- AnotherScriptFile.ps1 

次のようFooModule.psd1がカスタマイズされているマニフェストファイル::
モジュールのフォルダ構造は次のようになります

@{ 
    ModuleVersion = '0.0.1' 
    GUID = ... 
    Author = ... 
    CompanyName = .. 
    Copyright = ... 
    Description = ... 
    PowerShellVersion = '5.0' 
    ClrVersion = '4.0' 
    RootModule = "FooModule.psm1" 
    FunctionsToExport = '*' 
    CmdletsToExport = '*' 
    VariablesToExport = '*' 
    AliasesToExport = '*' 
    # HelpInfoURI = '' 
    # DefaultCommandPrefix = '' 
} 

私はFooModule.psm1の先頭にこれらを置く:

Push-Location $PSScriptRoot 
.\AnotherScriptFile.ps1 
Pop-Location 

AnotherScriptFile.ps1は次のようになります。

Write-Host "Imported!" 
function Get-FooFunction($val) 
{ 
    return "Foo Bar"; 
} 

モジュールをインポートすると、AnotherScriptFile.ps1の関数と変数がモジュールのスコープに読み込まれ、書き出されます。 悲しいことに、Import-Module .\FooModule.psm1モジュールをモジュールのフォルダにインポートした後、Get-FooFunctionを呼び出すと、Get-FooFunctionが存在しないというエラーが表示されましたが、'Write-Host "Imported!"が呼び出されました。

この作業を行う正しい方法は何ですか?

答えて

2

あなたのモジュールマニフェスト内ScriptsToProcess配列内のスクリプトを追加することができますあなたのための迅速な返事

# Script files (.ps1) that are run in the caller's environment prior to importing this module. 
ScriptsToProcess = @('.\AnotherScriptFile.ps1') 
+0

感謝。私は試しましたが、うまくいかなかった:( – WonTasia

+1

'FooModule.psm1'にファイルを別のドットで表示する別の方法があります。これを試してみてください: '。\ AnotherScriptFile.ps1' –

+0

試しましたしかし、今回は、エラーが発生しました。「.. \ AnotherScriptFile.ps1は、コマンドレット、関数、スクリプトファイル、または操作可能なプログラムの名前として認識されません」と言われていますが、作業ディレクトリはモジュールのルートに設定されていました。 – WonTasia

関連する問題