Mat*_*owe 10 powershell cmdlets powershell-module
我已经有一段时间了.我打算为我的项目创建新的PowerShell模块.目标是将多个自定义cmdlet打包到独立单元中,我可以通过我们的Nexus存储库(或通过其他任何方式)将其部署到其他计算机.
问题:我看到的每个地方,都看到教程将所有PowerShell函数/ cmdlet打包成单个*.psm1文件.文件存储在同名目录中,实际上代表模块本身.
问题:有没有办法,如何将每个cmdlet /函数分成独立文件?如果我有一个由几个cmdlet组成的模块,将它们全部放在单个*.psm1文件中并不是很方便.
谢谢马修
Joh*_*aan 13
您还可以使用清单文件."模块清单是包含哈希表的.psd1文件.哈希表中的键和值执行以下操作:
模块不需要清单.模块可以引用脚本文件(.ps1),脚本模块文件(.psm1),清单文件(.psd1),格式和类型文件(.ps1xml),cmdlet和提供程序集(.dll),资源文件,帮助文件,本地化文件,或作为模块一部分捆绑的任何其他类型的文件或资源.对于国际化脚本,模块文件夹还包含一组消息目录文件.如果将清单文件添加到模块文件夹,则可以通过引用清单将多个文件作为单个单元引用."(来源)
因此,您可以直接从psd1文件使用ps1文件而不是psm1文件:
# Modules to import as nested modules of the module specified in RootModule/ModuleToProcess
NestedModules = 'Get-WUList.ps1','Add-WUOfflineSync.ps1'
# Functions to export from this module
FunctionsToExport = 'Get-WUList','Add-WUOfflineSync'
Run Code Online (Sandbox Code Playgroud)
只是发布这个我发现的答案,因为我实际上正在写问题本身:-)。我从互联网上下载了一些 PowerShell 模块并查看了内部,我在那里找到了答案。但由于我在这个问题上卡住了几个小时(powershell 新手;-)),我决定无论如何都要发布这个,为了后代:-P。
您可以将每个 cmdlet(*.ps1 文件)放入单独的文件中。将它们存储在模块目录中并创建 *.psm1 文件。然后,将 *.ps1 cmdlet/函数点源到此 *.psm1 中。
但是,对存储 *.ps1 文件的当前模块目录的引用必须像这样提供:
“.$psScriptRoot/moduleFunc1.ps1” ,而不是“ ../moduleFunc1.ps1 ” ”
享受马太福音
归档时间: |
|
查看次数: |
5576 次 |
最近记录: |