首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Powershell模块结构

问Powershell模块结构
EN

Stack Overflow用户
提问于 2017-03-27 02:13:37
回答 1查看 1.5K关注 0票数 3

我正在尝试找出在磁盘上组织Powershell模块的最佳方法。

我认为将每个cmdlet放在自己的文件中是明智的,但如果我这样做了,似乎仍然需要在psm1文件中对它们进行点源代码处理,即使我已经在模块清单中列出了该文件。有没有办法避免在psm1文件中包含这些脚本?如果不是,那么模块清单的意义是什么?我觉得所有这些信息都可以包含在psm1文件中。

EN

回答 1

Stack Overflow用户

发布于 2017-03-27 03:00:14

典型的做法是将您的函数组织到私有和公共文件夹下的单个文件中。Public是你的用户将调用的,private是脚本内部的。然后,您可以使用循环来加载它们,以及使用模块清单来公开公共模块:

代码语言:javascript
复制
$Public = @( Get-ChildItem -Path "$PSScriptRoot\Public\*.ps1" ) $Private = @( Get-ChildItem -Path "$PSScriptRoot\Private\*.ps1" )

@($Public + $Private) | ForEach-Object {
    Try {
        . $_.FullName
    } Catch {
        Write-Error -Message "Failed to import function $($_.FullName): $_"
    } }

Export-ModuleMember -Function $Public.BaseName Export-ModuleMember
-Variable 'LogPath'

示例:

https://github.com/markwragg/Powershell-SlackBot/tree/master/SlackBot

模块清单仍然是有价值的,它提供了其他好处,比如即使模块没有加载也允许cmdlet被发现,并声明依赖项(例如格式化xml文件或此模块所依赖的其他模块)。这也是将模块发布到Powershell Gallery的一个要求。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43032681

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档