首页 > 解决方案 > ImportPSModulesFromPath 不会向 Modules 集合添加任何内容

问题描述

我有一个 Powershell 模块,需要将其加载到运行空间中以供不同线程使用。我知道定义 SessionState 允许我加载模块,然后运行空间可以访问:

$SessionState = [System.Management.Automation.Runspaces.InitialSessionState]::Create()
$SessionState.ImportPSModulesFromPath("$filepath\Validation Library.psd1")
$runspacePool = [runspacefactory]::CreateRunspacePool($SessionState)

问题是我似乎ImportPSModulesFromPath什么也做不了——它没有返回任何错误,但$SessionState.Modules集合总是空的,我的运行空间不断返回错误,说它找不到模块中的函数,即使它们在 psd1 中正确定义,如果我使用Import-Module.

psd1 文件包含指向同一文件夹中的 psm1 文件的模块定义(直接指向 psm1 时我得到相同的行为)

标签: powershellmodule

解决方案


经过大量搜索和测试,我无法确定脚本有什么问题 - 直到我关闭并重新打开我的 Powershell 会话。

尽管我一直在小心处理和删除我认为正在使用的变量,但我一直在反复运行具有相同变量的相同脚本,因此不正确的内容被存储到我的一个变量中,导致模块加载失败.

在新会话中运行相同的脚本表明模块已成功加载。


推荐阅读