正确安装PowerShell模块为所有用户

问题描述 投票:3回答:1

我已经看了this document,并列出$Env:ProgramFiles\WindowsPowerShell\Modules%ProgramFiles%\WindowsPowerShell\Modules),作为为所有用户安装模块的好地方。关于命名,它说:

使用正确的模块目录名称

A“结构良好”模块是存储在具有相同的名称作为在模块目录的至少一个文件的基本名称的目录的模块。如果不能很好地形成一个模块,Windows PowerShell将无法识别它作为一个模块。

文件的“基本名称”是没有文件扩展名的名称。在一个结构良好的模块,包含模块文件必须在模块中的至少一个文件的基本名称相匹配的目录名称。

例如,样品Fabrikam的模块中,包含模块文件的目录被命名为“Fabrikam的”和至少一个文件具有“Fabrikam的”基本名称。在这种情况下,无论是Fabrikam.psd1和Fabrikam.dll有“Fabrikam的”基本名称。

C:\Program Files   Fabrikam Technologies
    Fabrikam Manager
      Modules
        Fabrikam
          Fabrikam.psd1 (module manifest)
          Fabrikam.dll (module assembly)

不过,我仍不清楚;假设我有一个模块组成ABC.psd1ABC.psm1。我是否正确理解它应安装在$Env:ProgramFiles\WindowsPowerShell\Modules\ABC,用的.psd1和名为.psm1直接该目录下的?

纵观一些微软的模块,我明白了,例如:

C:\Program Files
    WindowsPowerShell
      Modules
        AzureRM
           5.7.0
              AzureRM[.psd1,psm1]

因此,至少基于所引用的文件,它打破了“合式模块”自言似乎并没有允许该5.7.0目录,或者不谈论递归搜索的规则。那是一个层次专门用于版本控制,是开发商的选择?即使对于版本,它不符合上述文件的建议,对“使用一个模块的多个版本”,这表明它被添加到目录名,而不是一个子目录。

我的问题的要点是这样的:

  1. 是否有此目录中如何PowerShell中搜索模块,一个更好的解释,相对于嵌套?
  2. 假设我的产品的增长,我有第二个模块DEF.psd1。我应该组一个公司或产品文件夹下,并PowerShell的所有版本的开心与此(即无我改变PSModulePath)。

e.g:

C:\Program Files
    WindowsPowerShell
          Modules
              My Company
                     ABC
                         ABC[.psd1,psm1]
                     DEF
                         DEF[.psd1,psm1]

我期待支持PowerShell的3.0及更高版本。另外,我注意到的是,PowerShell的ISE模块浏览器使用搜索模块,不同的规则,比PowerShell的本身。例如,使用我所提出的分层结构,同时公司名称工作在PowerShell中,ISE和用户脚本罚款,但破坏了ISE模块浏览器上的“显示详细信息”,当点击它提供了一个“无法找到模块”错误。

powershell module
1个回答
0
投票

看起来你很可能有这样的回答。不知道为什么/在AzureRM模块如何有版本的文件夹...但该模块是由微软创建的,所以也许他们知道一个漏洞。

根据我的经验和我读过的文档中,正确的文件结构是什么,你必须在你的榜样,除了没有“我的公司”文件夹。你如何命名的文件夹和名为.psm1 / PSD1文件(具有相同的基本名称)是正确的。事实上,对于一个最小的基于脚本的模块,所有你需要的是名为.psm1文件,它会工作(负载任何功能都在文件中),虽然产生与New-ModuleManifest将模块文件不会受到伤害。正如在评论中提到的,版本然后可以跟踪,并在文件中的.psd1通过PowerShell的认可。

现在,我从来没有把一个模块中的所有用户的文件夹PROGRAMFILES但我想象它使用相同的规则基于用户的文件夹(它们是在PowerShell中着眼于一个环境变量只是路径)。

我还使用下面的链接作为一种方法或模板用于构建易于维护PowerShell模块:http://ramblingcookiemonster.github.io/Building-A-PowerShell-Module/

你可以忽略你不感兴趣或不使用(用于测试或视图文件夹或使用一个Git回购)的部分...的基本结构工程,以及加载各个功能与名为.psm1文件的技术。

© www.soinside.com 2019 - 2024. All rights reserved.