gpt4 book ai didi

Powershell模块结构

转载 作者:行者123 更新时间:2023-12-02 22:39:52 25 4
gpt4 key购买 nike

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

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

最佳答案

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

$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

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

关于Powershell模块结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43032681/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com