> 文档中心 > [运维笔记] PowerShell (模块).模块清单

[运维笔记] PowerShell (模块).模块清单

[运维笔记] 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' }    }}