Jas*_*oyd 5 powershell powershell-module
我有一个带有相应模块清单的自定义 PowerShell 模块。在我的模块中的一个命令中,我有一个硬编码的哈希表数组。一开始这很好,但有时我不得不回去向这个硬编码数组添加新的哈希表,并且数组变得很长。以这种方式管理这些数据变得越来越困难。我真正想做的是将此集合移出到外部资源(例如 CSV 文件)中,并让命令从 CSV 文件中读取数据。实际上,这是我从一开始就喜欢的,但直到现在才变得足够痛苦,以至于我不得不弄清楚如何做到这一点。
我的问题是我将如何做这件事?或者甚至可以做到吗?我已经阅读了很多关于模块清单的内容,但我不记得读过任何描述在清单文件中指定附加资源的方法或如何以对模块“私有”的方式加载这些资源的任何内容。我想我可以将 CSV 文件与所有其他 PowerShell 文件一起放在模块的文件夹中,然后也许我可以找到它,$PSScriptRoot但这似乎不是很“官方”(而且我不是 100% 确定它会起作用)。另外,通过这样做,清单中没有任何内容会向其他人暗示模块正常运行需要其他资源。
对于这样的事情是否有最佳实践,或者我是不是完全错了?
清单定义确实有一个关键;它称为FileList,本质上是一个文件数组。由于 cmdlet 生成的描述New-ModuleManifest显示“与此模块打包的所有文件的列表”,这就是我在使用它时指定的内容。(我不必列出 .psm1 文件,因为它已在清单中的其他位置列出。)
# List of all files packaged with this module
FileList = @(
'script1.ps1',
'script2.ps1',
'Microsoft.Web.Publishing.Tasks.Dll',
'transform.proj',
'some_file.xml'
)
Run Code Online (Sandbox Code Playgroud)
至于查找文件,我只是使用$PSScriptRoot,就像您建议的那样。
据我所知,没有任何东西可以自动处理模块的安装。您仍然需要将其放入PSModulePath环境变量中的文件夹中。
| 归档时间: |
|
| 查看次数: |
358 次 |
| 最近记录: |