[玩转系统] 了解 Windows PowerShell 模块
作者:精品下载站 日期:2024-12-14 02:48:02 浏览:14 分类:玩电脑
了解 Windows PowerShell 模块
模块是一组相关的 Windows PowerShell 功能,组合在一起作为一个方便的单元(通常保存在单个目录中)。通过将一组相关的脚本文件、程序集和相关资源定义为模块,您可以比其他方式更轻松地引用、加载、保留和共享代码。
模块的主要目的是允许Windows PowerShell 代码的模块化(即重用和抽象)。例如,创建模块的最基本方法是将 Windows PowerShell 脚本保存为 .psm1 文件。这样做可以让您控制(即公开或私有)脚本中包含的函数和变量。将脚本保存为 .psm1 文件还允许您控制某些变量的范围。最后,您还可以使用 Install-Module 等 cmdlet 来组织、安装脚本并将其用作更大解决方案的构建块。
模块组件和类型
模块由四个基本组件组成:
某种代码文件 - 通常是 PowerShell 脚本或托管 cmdlet 程序集。
上述代码文件可能需要的任何其他内容,例如附加程序集、帮助文件或脚本。
-
描述上述文件并存储元数据(例如作者和版本控制信息)的清单文件。
包含上述所有内容的目录,并且位于 PowerShell 可以合理找到它的位置。
笔记
这些组件本身实际上并不是必需的。例如,从技术上讲,模块只能是存储在 .psm1 文件中的脚本。您还可以有一个模块,它只是一个清单文件,主要用于组织目的。您还可以编写一个动态创建模块的脚本,因此实际上不需要目录来存储任何内容。以下部分描述了通过将模块的不同可能部分混合和匹配在一起可以获得的模块类型。
脚本模块
顾名思义,脚本模块是一个包含任何有效 Windows PowerShell 代码的文件 (.psm1
)。脚本开发人员和管理员可以使用此类模块来创建其成员包括函数、变量等的模块。从本质上讲,脚本模块只是一个具有不同扩展名的 Windows PowerShell 脚本,允许管理员在其上使用导入、导出和管理功能。
此外,您可以使用清单文件在模块中包含其他资源,例如数据文件、其他依赖模块或运行时脚本。清单文件对于跟踪元数据(例如创作和版本控制信息)也很有用。
最后,与任何其他非动态创建的模块一样,脚本模块需要保存在 PowerShell 可以合理发现的文件夹中。通常,它位于 PowerShell 模块路径上;但如有必要,您可以明确描述模块的安装位置。有关详细信息,请参阅如何编写 PowerShell 脚本模块。
二进制模块
二进制模块是包含已编译代码(例如 C#)的 .NET Framework 程序集 (.dll
)。 Cmdlet 开发人员可以使用此类模块来共享 cmdlet、提供程序等。 (现有管理单元也可以用作二进制模块。)与脚本模块相比,二进制模块允许您创建更快的 cmdlet 或使用在 Windows PowerShell 脚本中不易编码的功能(例如多线程) 。
与脚本模块一样,您可以包含清单文件来描述模块使用的其他资源,并跟踪有关模块的元数据。同样,您可能应该将二进制模块安装在 PowerShell 模块路径上的某个文件夹中。有关详细信息,请参阅如何编写 PowerShell 二进制模块。
清单模块
清单模块是使用清单文件来描述其所有组件的模块,但没有任何类型的核心程序集或脚本。 (正式地,清单模块将清单的 ModuleToProcess
或 RootModule
元素留空。)但是,您仍然可以使用模块的其他功能,例如能够加载依赖程序集或自动运行某些预处理脚本。您还可以使用清单模块作为打包其他模块将使用的资源(例如嵌套模块、程序集、类型或格式)的便捷方法。有关详细信息,请参阅如何编写 PowerShell 模块清单。
动态模块
动态模块是不从文件加载或保存到文件的模块。相反,它们是由脚本使用 New-Module cmdlet 动态创建的。这种类型的模块使脚本能够按需创建模块,而无需加载或保存到持久存储中。就其本质而言,动态模块的生命周期较短,因此无法通过 Get-Module
cmdlet 访问。同样,它们通常不需要模块清单,也可能不需要永久文件夹来存储相关程序集。
模块清单
模块清单是一个包含哈希表的.psd1
文件。哈希表中的键和值执行以下操作:
描述模块的内容和属性。
定义先决条件。
确定如何处理组件。
模块不需要清单。模块可以引用脚本文件 (
.ps1
)、脚本模块文件 (.psm1
)、清单文件 (.psd1
)、格式和类型文件(.ps1xml
)、cmdlet 和提供程序程序集 (.dll
)、资源文件、帮助文件、本地化文件或作为一部分捆绑的任何其他类型的文件或资源模块的。对于国际化脚本,模块文件夹还包含一组消息目录文件。如果将清单文件添加到模块文件夹,则可以通过引用清单将多个文件作为一个单元进行引用。清单本身描述了以下类别的信息:
有关模块的元数据,例如模块版本号、作者和描述。
导入模块所需的先决条件,例如 Windows PowerShell 版本、公共语言运行时 (CLR) 版本以及所需的模块。
处理指令,例如要处理的脚本、格式和类型。
-
对要导出的模块成员的限制,例如要导出的别名、函数、变量和 cmdlet。
有关详细信息,请参阅如何编写 PowerShell 模块清单。
存储和安装模块
创建脚本、二进制文件或清单模块后,您可以将您的工作保存在其他人可以访问的位置。例如,您的模块可以存储在安装 Windows PowerShell 的系统文件夹中,也可以存储在用户文件夹中。
一般来说,您可以使用 $ENV:PSModulePath
变量中存储的路径之一来确定应该安装模块的位置。使用这些路径之一意味着当用户在代码中调用您的模块时,PowerShell 可以自动查找并加载您的模块。如果您将模块存储在其他位置,则可以在调用 Install-Module
时将模块的位置作为参数传递,从而显式让 PowerShell 知道。
无论如何,该文件夹的路径被称为模块的基址(ModuleBase),并且脚本、二进制或清单模块文件的名称应与模块文件夹名称相同,但以下情况除外:
由
New-Module
cmdlet 创建的动态模块可以使用 cmdlet 的Name
参数命名。通过
Import-Module -Assembly
命令从程序集对象导入的模块根据以下语法命名:"dynamic_code_module_" + assembly.GetName()
。有关详细信息,请参阅安装 PowerShell 模块和 about_PSModulePath。
模块 Cmdlet 和变量
Windows PowerShell 提供以下 cmdlet 和变量,用于创建和管理模块。
New-Module cmdlet 此 cmdlet 创建仅存在于内存中的新动态模块。该模块是从脚本块创建的,其导出的成员(例如其函数和变量)在会话中立即可用,并保持可用,直到会话关闭。
New-ModuleManifest cmdlet 此 cmdlet 创建新的模块清单 (.psd1) 文件、填充其值并将清单文件保存到指定路径。此 cmdlet 还可用于创建可手动填写的模块清单模板。
Import-Module cmdlet 此 cmdlet 将一个或多个模块添加到当前会话。
Get-Module cmdlet 此 cmdlet 检索有关已导入或可以导入当前会话的模块的信息。
Export-ModuleMember cmdlet 此 cmdlet 指定从脚本模块 (.psm1) 文件或从使用 New-Module 创建的动态模块导出的模块成员(例如 cmdlet、函数、变量和别名) /代码> cmdlet。
Remove-Module cmdlet 此 cmdlet 从当前会话中删除模块。
Test-ModuleManifest cmdlet 此 cmdlet 通过验证模块清单文件 (.psd1) 中列出的文件是否确实存在于指定路径中来验证模块清单是否准确地描述了模块的组件。
$PSScriptRoot 此变量包含正在执行脚本模块的目录。它使脚本能够使用模块路径来访问其他资源。
$env:PSModulePath 此环境变量包含存储 Windows PowerShell 模块的目录列表。自动导入模块和更新模块的帮助主题时,Windows PowerShell 使用此变量的值。
参见
编写 Windows PowerShell 模块
猜你还喜欢
- 03-30 [玩转系统] 如何用批处理实现关机,注销,重启和锁定计算机
- 02-14 [系统故障] Win10下报错:该文件没有与之关联的应用来执行该操作
- 01-07 [系统问题] Win10--解决锁屏后会断网的问题
- 01-02 [系统技巧] Windows系统如何关闭防火墙保姆式教程,超详细
- 12-15 [玩转系统] 如何在 Windows 10 和 11 上允许多个 RDP 会话
- 12-15 [玩转系统] 查找 Exchange/Microsoft 365 中不活动(未使用)的通讯组列表
- 12-15 [玩转系统] 如何在 Windows 上安装远程服务器管理工具 (RSAT)
- 12-15 [玩转系统] 如何在 Windows 上重置组策略设置
- 12-15 [玩转系统] 如何获取计算机上的本地管理员列表?
- 12-15 [玩转系统] 在 Visual Studio Code 中连接到 MS SQL Server 数据库
- 12-15 [玩转系统] 如何降级 Windows Server 版本或许可证
- 12-15 [玩转系统] 如何允许非管理员用户在 Windows 中启动/停止服务
取消回复欢迎 你 发表评论:
- 精品推荐!
-
- 最新文章
- 热门文章
- 热评文章
[影视] 黑道中人 Alto Knights(2025)剧情 犯罪 历史 电影
[古装剧] [七侠五义][全75集][WEB-MP4/76G][国语无字][1080P][焦恩俊经典]
[实用软件] 虚拟手机号 电话 验证码 注册
[电视剧] 安眠书店/你 第五季 You Season 5 (2025) 【全10集】
[电视剧] 棋士(2025) 4K 1080P【全22集】悬疑 犯罪 王宝强 陈明昊
[软件合集] 25年6月5日 精选软件22个
[软件合集] 25年6月4日 精选软件36个
[短剧] 2025年06月04日 精选+付费短剧推荐33部
[短剧] 2025年06月03日 精选+付费短剧推荐25部
[软件合集] 25年6月3日 精选软件44个
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电视剧] 欢乐颂.5部全 (2016-2024)
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[影视] 【稀有资源】香港老片 艺坛照妖镜之96应召名册 (1996)
[剧集] 神经风云(2023)(完结).4K
[剧集] [BT] [TVB] [黑夜彩虹(2003)] [全21集] [粤语中字] [TV-RMVB]
[实用软件] 虚拟手机号 电话 验证码 注册
[资源] B站充电视频合集,包含多位重量级up主,全是大佬真金白银买来的~【99GB】
[影视] 内地绝版高清录像带 [mpg]
[书籍] 古今奇书禁书三教九流资料大合集 猎奇必备珍藏资源PDF版 1.14G
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电影] 美国队长4 4K原盘REMUX 杜比视界 内封简繁英双语字幕 49G
[电影] 死神来了(1-6)大合集!
[软件合集] 25年05月13日 精选软件16个
[精品软件] 25年05月15日 精选软件18个
[绝版资源] 南与北 第1-2季 合集 North and South (1985) /美国/豆瓣: 8.8[1080P][中文字幕]
[软件] 25年05月14日 精选软件57个
[短剧] 2025年05月14日 精选+付费短剧推荐39部
[短剧] 2025年05月15日 精选+付费短剧推荐36部
- 最新评论
-
- 热门tag