[运维笔记] PowerShell (模块).模块清单
模块清单是一个包含键和值的哈希表的文本文件,它用于描述模块的内容并确定如何处理模块
2. 如何创建模块清单
【命令】
New-ModuleManifest [-Path] <String> [-NestedModules <Object[]>] [-Guid <Guid>] [-Author <String>] [-CompanyName <String>] [-Copyright <String>] [-RootModule <String>] [-ModuleVersion <Version>] [-Description <String>] [-ProcessorArchitecture <ProcessorArchitecture>] [-PowerShellVersion <Version>] [-CLRVersion <Version>] [-DotNetFrameworkVersion <Version>] [-PowerShellHostName <String>] [-PowerShellHostVersion <Version>] [-RequiredModules <Object[]>] [-TypesToProcess <String[]>] [-FormatsToProcess <String[]>] [-ScriptsToProcess <String[]>] [-RequiredAssemblies <String[]>] [-FileList <String[]>] [-ModuleList <Object[]>] [-FunctionsToExport <String[]>] [-AliasesToExport <String[]>] [-VariablesToExport <String[]>] [-CmdletsToExport <String[]>] [-DscResourcesToExport <String[]>] [-CompatiblePSEditions <String[]>] [-PrivateData <Object>] [-Tags <String[]>] [-ProjectUri <Uri>] [-LicenseUri <Uri>] [-IconUri <Uri>] [-ReleaseNotes <String>] [-Prerelease <String>] [-RequireLicenseAcceptance] [-ExternalModuleDependencies <String[]>] [-HelpInfoUri <String>] [-PassThru] [-DefaultCommandPrefix <String>] [-WhatIf] [-Confirm] [<CommonParameters>]
这里的多数选项见“内容解释”部分,因为我们会在模块清单创建好后手动去编辑文本中的相应内容。我们只需要指定 模块清单文件路径-Path
即可。你也可以使用-ModuleVersion
和-Author
指定你的模块版本和作者。如:
【例子】
New-ModuleManifest .\jc.config.psd1 -ModuleVersion "1.0.0" -Author "JackLee95"
可以看到在当前目录下生成了一个名为jc.config.psd1
的文件,即模块清单
。
3. 模块清单.psd1
文件内容解释
该文件内容和解释如下:
# # Module manifest for module 'jc.config' # # Generated by: JackLee95 # # Generated on: 2021/11/9 # @{ # 与此清单关联的脚本模块或二进制模块文件。 # RootModule = '' # 此模块的版本号。 ModuleVersion = '1.0.0' # 支持的 PSEditions # CompatiblePSEditions = @() # 用于唯一标识该模块的标识 ID GUID = '9d592212-31f7-4754-8038-9e15c1ca5ed2' # 本模块的作者 Author = 'JackLee95' # 该模块的公司或供应商 CompanyName = 'Unknown' # 本模块的版权声明 Copyright = '(c) JackLee95. All rights reserved.' # 本模块提供的功能描述 # Description = '' # 此模块所需的PowerShell引擎的最低版本 # PowerShellVersion = '' # 此模块所需的PowerShell主机的名称 # PowerShellHostName = '' # 此模块所需的PowerShell主机的最低版本 # PowerShellHostVersion = '' # 此模块所需的 Microsoft .NET Framework 最低版本。此先决条件仅对PowerShell桌面版有效。 # DotNetFrameworkVersion = '' # 此模块所需的公共语言运行库(CLR)的最低版本。此先决条件仅对PowerShell桌面版有效。 # ClrVersion = '' # 本模块所需的处理器架构(None、X86、Amd64) # ProcessorArchitecture = '' # 在导入此模块之前必须导入到全局环境中的模块 # RequiredModules = @() # 导入此模块之前必须加载的程序集 # RequiredAssemblies = @() # 导入此模块之前在调用者环境中运行的脚本文件(. ps1)。 # ScriptsToProcess = @() # 键入导入此模块时要加载的文件(.ps1xml) # TypesToProcess = @() # 导入此模块时要加载的格式文件(.ps1xml) # FormatsToProcess = @() # 要作为 RootModule/ModuleToProcess 中指定模块的嵌套模块导入的模块 # NestedModules = @() # 要从此模块导出的函数,为了获得最佳性能,不要使用通配符,也不要删除条目,如果没有要导出的函数,请使用空数组。 FunctionsToExport = @() # 要从此模块导出的cmdlet,为了获得最佳性能,请不要使用通配符,也不要删除条目,如果没有要导出的cmdlet,请使用空数组。 CmdletsToExport = @() # 要从此模块导出的变量 VariablesToExport = '*' # 要从此模块导出的别名为了获得最佳性能,请不要使用通配符,也不要删除条目,如果没有要导出的别名,请使用空数组。 AliasesToExport = @() # 要从此模块导出的DSC资源 # DscResourcesToExport = @() # 与此模块一起打包的所有模块的列表 # ModuleList = @() # 与此模块一起打包的所有文件列表 # FileList = @() # 要传递给根模块/模块进程中指定的模块的私有数据。这可能还包含一个PSData哈希表,其中包含PowerShell使用的附加模块元数据。 PrivateData = @{ PSData = @{ # 应用于此模块的标签。这些有助于在线图库中的模块发现。 # Tags = @() # 此模块许可证的URL。 # LicenseUri = '' # A URL to the main website for this project. # ProjectUri = '' # A URL to an icon representing this module. # IconUri = '' # 发布本模块的注释 # ReleaseNotes = '' # 此模块的预发布字符串 # Prerelease = '' # 指示模块是否要求用户明确接受安装/更新/保存的标志 # RequireLicenseAcceptance = $false # 该模块的外部相关模块 # ExternalModuleDependencies = @() } # PSData哈希表的结尾 } # 私有数据哈希表的结尾 # 本模块的帮助信息URI # HelpInfoURI = '' # 从该模块导出的命令的默认前缀。使用 Import-Module -Prefix 覆盖默认前缀。 # DefaultCommandPrefix = '' }
4. 某库的模块清单实例
@{ RootModule = 'Xxxxx.psm1' ModuleVersion = '1.0.0' GUID = 'xxxxxx-xxx-xxxx-xxx-xxxxxxxxxxxx' Author = 'xxxx' CompanyName = 'xxxx' Copyright = '(c) 2019 xxxx, licensed under MIT License.' Description = 'A xxxxxxx compatible PowerShell Xxxxx with custom appenders support!' PowerShellVersion = '5.0' HelpInfoURI = 'https://github.com/xxxx/xxxx/master/README.md' RequiredModules = @('Xxxx') FunctionsToExport = '' NestedModules = @( 'Src\Entry\XoggerEntry.psm1' 'Src\Entry\XoggerEntryTrimmed.psm1' 'Src\Appender\ColoredConsoleAppender.psm1' 'Src\Appender\FileAppender.psm1' 'Src\Appender\AppVeyorAppender.psm1' 'Src\IXxxxx.psm1' ) PrivateData = @{ PSData = @{ Tags = @('xxxx', 'xxx', 'xxx', 'xxxx', 'xxxx', 'xxxx', 'xxxx') LicenseUri = 'https://xx/xx/xx/xx/LICENSE' ProjectUri = 'https://xxx/xxx/Logger' IconUri = 'https://xxx.x.xx/icon.png' ReleaseNotes = 'xxxx' } } }