【问题标题】:Import-Module works only when piped from Get-ModuleImport-Module 仅在从 Get-Module 管道传输时有效
【发布时间】:2018-03-05 21:53:55
【问题描述】:

我写了一个简单的 PowerShell 模块。我需要保留更多版本的模块。 版本的所有路径都添加到$env:PSModulePath 将模块导入会话时遇到奇怪的问题。

这失败了:

Import-Module Contoso.PowerShell -RequiredVersion "0.0.2"
Import-Module:指定模块“Contoso.PowerShell”,版本为“0.0.2” 未加载,因为在任何模块目录中都找不到有效的模块文件。 在行:1 字符:1 + 导入模块 Contoso.PowerShell -RequiredVersion "0.0.2" + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~ + CategoryInfo : ResourceUnavailable: (Contoso.PowerShell:String) [Import-Module], FileNotFoundException + FullyQualifiedErrorId : Modules_ModuleWithVersionNotFound,Microsoft.PowerShell.Commands.ImportModuleCommand

现在奇怪的是——存在“0.0.2”版本的模块。我可以成功列出它(使用Get-Module -ListAvailable)。我什至可以导入它并使用它,但唯一的方法是:

Get-Module Contoso.PowerShell -ListAvailable |
    ? { $_.Version -eq "0.0.2" } |
    Import-Module

然后一切都像魅力一样。问题是:为什么?我希望能够使用第一个简单命令导入模块。

编辑:

这是我存储模块版本的方式:

 Get-Module Contoso.PowerShell -ListAvailable
目录:C:\Program Files\WindowsPowerShell\Modules\Contoso.PowerShell\Contoso.PowerShell.0.0.1 ModuleType 版本名称 ExportedCommands ---------- -------- ---- ---------------- 脚本 0.0.1 Contoso.PowerShell 目录:C:\Program Files\WindowsPowerShell\Modules\Contoso.PowerShell\Contoso.PowerShell.0.0.2 ModuleType 版本名称 ExportedCommands ---------- -------- ---- ---------------- 脚本 0.0.2 Contoso.PowerShell

很抱歉造成混淆 - 我在 PSModulePath 环境变量中没有每个版本的路径。

【问题讨论】:

    标签: powershell powershell-5.0 import-module


    【解决方案1】:

    Import-Module 起作用的原因是因为它使用了不同的参数集;它接受一个或多个 [PSModuleInfo] 对象,这是 Get-Module 返回的对象。

    很可能,它使用Get-Module 已经完成的工作来确定要加载哪个文件。

    接下来的问题是“为什么Import-Module 不能像Get-Module 那样找到版本?”答案是“我不知道”。

    虽然它们在任何情况下都应该保持一致,但可能导致麻烦的原因是您的直接结构。您如何存储多个版本?

    在我看来您的模块路径不正确。

    你的结构应该是:

    Contoso.PowerShell\0.0.2
    Contoso.PowerShell\0.0.3
    

    等等

    模块文件直接放在版本号文件夹中,里面不应该有名字。

    您可以通过使用Install-Module 从存储库安装一个并查看它如何处理它来查看此结构。

    【讨论】:

    • 我编辑了我的问题 - 添加了有关我如何存储模块版本的信息。
    • 我更改了文件夹结构,现在一切正常。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-03
    • 1970-01-01
    • 2021-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多