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!"
が呼び出されました。
この作業を行う正しい方法は何ですか?
感謝。私は試しましたが、うまくいかなかった:( – WonTasia
'FooModule.psm1'にファイルを別のドットで表示する別の方法があります。これを試してみてください: '。\ AnotherScriptFile.ps1' –
試しましたしかし、今回は、エラーが発生しました。「.. \ AnotherScriptFile.ps1は、コマンドレット、関数、スクリプトファイル、または操作可能なプログラムの名前として認識されません」と言われていますが、作業ディレクトリはモジュールのルートに設定されていました。 – WonTasia