Powershell教程(2)——自定义模块Module语法

一、模板构成三要素

Powershell的模板和java中的包相似,就是将很多函数进行统一归纳到一个模块当中,利于其它开发者的引入。

  • 文件夹
  • 清单文件
  • 模块文件

下图列出的是自定义的名为Software模块的组成在这里插入图片描述

二、查询模块常见位置

输入下述命令查询模块的常见位置

 $env:PSModulePath

在这里插入图片描述

  • 文件夹C:\WINDOWS\system32\WindowsPowerShell\v1.0\Modules中存放的是系统模块,一般不把自己写的放在这里
  • 文件夹C:\Program Files\WindowsPowerShell\Modules中存放的是

三、创建模块psm1文件

我们知道,Powershell的脚本文件时以.ps1结尾,.psm1顾名思义是Powershell模块文件。新建模块文件,名为Software.psm1,其中包含三个函数。

function Get-Software {
	param()
}
function Install-Software {
	param()
}
function Remove-Software {
	param()
}

四、利用模板生成模块的psd1清单文件

Powershell自带的命令New-ModuleManifest可以为模板生成对应的清单文件,当然参数都是可以指定的。

New-ModuleManifest -Path '.\Software.psd1' -Author 'Chambocang' -RootModule .\Software.psm1 -Description 'This is a template module.'

在这里插入图片描述
生成的内容为:

#
# 模块“Software”的模块清单
#
# 生成者: Chambocang
#
# 生成时间: 2021/5/24
#

@{

# 与此清单关联的脚本模块或二进制模块文件。
RootModule = '.\Software.psm1'

# 此模块的版本号。
ModuleVersion = '1.0'

# 支持的 PSEditions
# CompatiblePSEditions = @()

# 用于唯一标识此模块的 ID
GUID = 'b6da06b9-2a4f-4ed7-9107-dbf74b4fcbd5'

# 此模块的作者
Author = 'Chambocang'

# 此模块所属的公司或供应商
CompanyName = '未知'

# 此模块的版权声明
Copyright = '(c) 2021 Chambocang。保留所有权利。'

# 此模块所提供功能的说明
Description = 'This is a template module.'

# 此模块要求的 Windows PowerShell 引擎的最低版本
# PowerShellVersion = ''

# 此模块要求的 Windows PowerShell 主机的名称
# PowerShellHostName = ''

# 此模块要求的 Windows PowerShell 主机的最低版本
# PowerShellHostVersion = ''

# 此模块要求使用的最低 Microsoft .NET Framework 版本。此先决条件仅对 PowerShell Desktop 版本有效。
# DotNetFrameworkVersion = ''

# 此模块要求使用的最低公共语言运行时(CLR)版本。此先决条件仅对 PowerShell Desktop 版本有效。
# CLRVersion = ''

# 此模块要求的处理器体系结构(无、X86、Amd64)
# ProcessorArchitecture = ''

# 必须在导入此模块之前先导入全局环境中的模块
# RequiredModules = @()

# 导入此模块之前必须加载的程序集
# RequiredAssemblies = @()

# 导入此模块之前运行在调用方环境中的脚本文件(.ps1)。
# ScriptsToProcess = @()

# 导入此模块时要加载的类型文件(.ps1xml)
# TypesToProcess = @()

# 导入此模块时要加载的格式文件(.ps1xml)
# FormatsToProcess = @()

# 将作为 RootModule/ModuleToProcess 中所指定模块的嵌套模块导入的模块
# NestedModules = @()

# 要从此模块中导出的函数。为了获得最佳性能,请不要使用通配符,不要删除该条目。如果没有要导出的函数,请使用空数组。
FunctionsToExport = ''

# 要从此模块中导出的 cmdlet。为了获得最佳性能,请不要使用通配符,不要删除该条目。如果没有要导出的 cmdlet,请使用空数组。
CmdletsToExport = '*'

# 要从此模块中导出的变量
VariablesToExport = '*'

# 要从此模块中导出的别名。为了获得最佳性能,请不要使用通配符,不要删除该条目。如果没有要导出的别名,请使用空数组。
AliasesToExport = '*'

# 要从此模块导出的 DSC 资源
# DscResourcesToExport = @()

# 与此模块一起打包的所有模块的列表
# ModuleList = @()

# 与此模块一起打包的所有文件的列表
# FileList = @()

# 要传递到 RootModule/ModuleToProcess 中指定的模块的专用数据。这还可能包含 PSData 哈希表以及 PowerShell 使用的其他模块元数据。
PrivateData = @{

    PSData = @{

        # 应用于此模块的标记。这些标记有助于在联机库中执行模块发现。
        # Tags = @()

        # 指向此模块的许可证的 URL。
        # LicenseUri = ''

        # 指向此项目的主网站的 URL。
        # ProjectUri = ''

        # 指向表示此模块的图标的 URL。
        # IconUri = ''

        # 此模块的 ReleaseNotes
        # ReleaseNotes = ''

    } # PSData 哈希表末尾

} # PrivateData 哈希表末尾

# 此模块的 HelpInfo URI
# HelpInfoURI = ''

# 从此模块中导出的命令的默认前缀。可以使用 Import-Module -Prefix 覆盖默认前缀。
# DefaultCommandPrefix = ''

}

五、查看模板

输入下述命令

Get-Module -Name Software -list

查询模块的结果如图所示
在这里插入图片描述

六、公开模块内的某个函数

修改参数FunctionsToExport的值为Install-Software,然后查询模块信息,如下图所示。
在这里插入图片描述

七、安装库中的模块

使用下述命令能够让主机下载远程库里的模块,和Linux中install命令相似

Install-Module -Name  $moduleName

上一篇Powershell教程(1)——函数Function语法

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

追寻上飞

鼓励一下这只勤劳的小蜜蜂吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值