Import-Module を使用してモジュールをインポートする場合、モジュールのコンテキストではなく、Import-Module (呼び出し先) を実行するコンテキストで、スクリプトのセット (存在する場合) をそのモジュールにドット ソースで渡したいと思います。これを行う方法は明確ではありません。
モジュールマニフェストの「ScriptsToProcess」部分には、モジュールを呼び出し先スコープにロードする前に実行するスクリプトが含まれていますが、モジュールがロードされた後に同等のものはないようです。この動作を実現する簡単な方法はありますか?
これは、呼び出し先のスコープ (通常は Import-Module を実行する場所) へのドット ソースではなく、モジュールのスコープへのドット ソースであるため、機能しない psm1 ファイルの例です。
# Define plugin location
$PluginLocation = Join-Path (Split-Path $profile) PluginScripts
if ($PSIse) {
# If plugin location does not exist tell the user.
if (-not (Test-Path $PluginLocation) ) {
Write-Host -ForegroundColor Green "There is no plugin directory $PluginLocation if you wish to automatically load plugin scripts please create this directory and place the scripts there."
} else {
Write-Host "Looking for scripts in $PluginLocation"
Get-ChildItem $PluginLocation -Recurse -Filter *.ps1 | % {
Write-Host "Sourcing $($_.Name)"
. $_.FullName
}
}
}