【问题标题】:How to import a module with a manifest如何使用清单导入模块
【发布时间】:2016-07-07 17:48:46
【问题描述】:

Powershell 今天真的是在考验我的耐心......好吧,所以我做了一个清单来获取我需要的程序集。现在,当我有 *.psm1 和 *.psd1 文件时,如何正确导入。

文件夹路径:C:\mypath\blah\blah\Module\Format-XML\

文件夹中的文件:Format-XML.psd1、Format-XML.psm1

Import-Module -Name "C:\mypath\blah\blah\Module\Format-XML\Format-XML"

然后,当我在从另一个脚本调用的模块中使用我的函数时,无论出于何种原因,它都不存在/工作。我做错了什么?

[错误] VERB-NOUN:术语“VERB-NOUN”未被识别为

[ERROR] cmdlet、函数、脚本文件或可运行的程序。检查

的拼写

[ERROR] 名称,或者如果包含路径,请验证路径是否正确并重试。

在 *.psd1 中:

FunctionsToExport = '*'

在*.psm1中:

#I know... not required but I tried anyways... :(
Export-ModuleMember -Function '*'

【问题讨论】:

    标签: powershell import module manifest


    【解决方案1】:

    因此需要将以下代码添加到您的 psd1 中。

    # Script module or binary module file associated with this manifest.
    RootModule = 'nameOfYourModule.psm1'
    

    【讨论】:

      【解决方案2】:

      查看导入的模块。您可以通过以下两种方式做到这一点:

      导入后:

      $mod = Get-Module -Name Format-XML
      

      导入期间:

      $mod = Import-Module -Name "C:\mypath\blah\blah\Module\Format-XML\Format-XML" -PassThru
      

      然后您可以检查$mod 并查看.ExportedCommands 属性。是否列出任何内容?

      还可以尝试删除第二个Format-XML(我假设最后一个组件是指模块本身而不是文件夹)。

      【讨论】:

      • 我有一个名为 Format-XML 的文件夹,我应该把它放在 Module 文件夹中吗?
      • @user3812871 你能运行tree C:\mypath\blah\blah\Module\Format-XML 并将结果编辑成你的问题吗?
      • @user3812871 还会检查导出的命令,看看您期望的功能是否出现。
      • 树上不存在子文件夹,导出的命令什么也不显示。
      • @user3812871 你能编辑模块代码并在你的问题中体现吗?如果你想省略它,函数定义比它的主体更重要..
      【解决方案3】:

      答案:不要忘记在清单中设置你的根模块... sigh

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-10-19
        • 1970-01-01
        • 2015-05-08
        • 2019-10-22
        • 2018-02-25
        • 2020-12-06
        • 2010-10-17
        相关资源
        最近更新 更多