当使用 Import-Module 导入模块时,我希望该模块在执行 Import-Module(被调用者)的上下文中点源一组脚本(如果它们存在) - 而不是在模块的上下文中。目前尚不清楚如何做到这一点。
模块清单中有一个“ScriptsToProcess”部分,其中包含在被调用范围内加载模块之前要运行的脚本,但是在模块加载后似乎没有等效项。有没有一种直接的方法来实现这种行为?
这是 psm1 文件中的一个示例,该文件不起作用,因为它是点源到模块的范围,而不是点源到被调用者的范围(通常是在您执行 Import-Module 的地方)。
# 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
}
}
}