[运维笔记] PowerShell (模块).模块清单
作者:jcLee95
目 录
1. 模块清单是什么
2. 如何创建模块清单
3. 模块清单.psd1
文件内容解释
4. 某库的模块清单实例
1. 模块清单是什么
模块清单是一个包含键和值的哈希表的文本文件,它用于描述模块的内容并确定如何处理模块
2. 如何创建模块清单
【命令】
New-ModuleManifest [-Path] [-NestedModules <Object[]>] [-Guid ] [-Author ] [-CompanyName ] [-Copyright ] [-RootModule ] [-ModuleVersion ] [-Description ] [-ProcessorArchitecture ] [-PowerShellVersion ] [-CLRVersion ] [-DotNetFrameworkVersion ] [-PowerShellHostName ] [-PowerShellHostVersion ] [-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 ] [-Tags <String[]>] [-ProjectUri ] [-LicenseUri ] [-IconUri ] [-ReleaseNotes ] [-Prerelease ] [-RequireLicenseAcceptance] [-ExternalModuleDependencies <String[]>] [-HelpInfoUri ] [-PassThru] [-DefaultCommandPrefix ] [-WhatIf] [-Confirm] []
这里的多数选项见“内容解释”部分,因为我们会在模块清单创建好后手动去编辑文本中的相应内容。我们只需要指定 模块清单文件路径-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 = @()# 用于唯一标识该模块的标识 IDGUID = '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' } }}