[玩转系统] New-Module (Microsoft.PowerShell.Core)
作者:精品下载站 日期:2024-12-14 02:15:22 浏览:15 分类:玩电脑
New-Module (Microsoft.PowerShell.Core)
New-Module
模块 :Microsoft.PowerShell.Core创建仅存在于内存中的新动态模块。
句法
New-Module
[-ScriptBlock] <ScriptBlock>
[-Function <String[]>]
[-Cmdlet <String[]>]
[-ReturnResult]
[-AsCustomObject]
[-ArgumentList <Object[]>]
[<CommonParameters>]
New-Module
[-Name] <String>
[-ScriptBlock] <ScriptBlock>
[-Function <String[]>]
[-Cmdlet <String[]>]
[-ReturnResult]
[-AsCustomObject]
[-ArgumentList <Object[]>]
[<CommonParameters>]
描述
New-Module
cmdlet 从脚本块创建动态模块。动态模块的成员(例如函数和变量)在会话中立即可用,并且在您关闭会话之前一直保持可用。
与静态模块一样,默认情况下,动态模块中的 cmdlet 和函数会被导出,而变量和别名则不会。但是,您可以使用 Export-ModuleMember cmdlet 和 New-Module
参数来覆盖默认值。
您还可以使用 New-Module
的 AsCustomObject 参数将动态模块作为自定义对象返回。模块的成员(例如函数)作为自定义对象的脚本方法实现,而不是导入到会话中。
动态模块仅存在于内存中,而不存在于磁盘上。与所有模块一样,动态模块的成员在私有模块作用域中运行,该作用域是全局作用域的子级。 Get-Module 无法获取动态模块,但 Get-Command 可以获取导出的成员。
要使动态模块可供 Get-Module
使用,请将 New-Module
命令通过管道传输到 Import-Module,或通过管道传输 New-Module
的模块对象code> 返回到 Import-Module
。此操作将动态模块添加到 Get-Module 列表中,但不会将模块保存到磁盘或使其持久化。
示例
示例1:创建动态模块
此示例使用名为 Hello
的函数创建一个新的动态模块。该命令返回一个表示新动态模块的模块对象。
New-Module -ScriptBlock {function Hello {"Hello!"}}
Name : __DynamicModule_2ceb1d0a-990f-45e4-9fe4-89f0f6ead0e5
Path : 2ceb1d0a-990f-45e4-9fe4-89f0f6ead0e5
Description :
Guid : 00000000-0000-0000-0000-000000000000
Version : 0.0
ModuleBase :
ModuleType : Script
PrivateData :
AccessMode : ReadWrite
ExportedAliases : {}
ExportedCmdlets : {}
ExportedFunctions : {[Hello, Hello]}
ExportedVariables : {}
NestedModules : {}
示例 2:使用动态模块以及 Get-Module 和 Get-Command
此示例演示 Get-Module
cmdlet 不会返回动态模块。它们导出的成员由 Get-Command
cmdlet 返回。
new-module -scriptblock {function Hello {"Hello!"}}
Name : __DynamicModule_2ceb1d0a-990f-45e4-9fe4-89f0f6ead0e5
Path : 2ceb1d0a-990f-45e4-9fe4-89f0f6ead0e5
Description :
Guid : 00000000-0000-0000-0000-000000000000
Version : 0.0
ModuleBase :
ModuleType : Script
PrivateData :
AccessMode : ReadWrite
ExportedAliases : {}
ExportedCmdlets : {}
ExportedFunctions : {[Hello, Hello]}
ExportedVariables : {}
NestedModules : {}
Get-Module
Get-Command Hello
CommandType Name Definition
----------- ---- ----------
Function Hello "Hello!"
示例 3:将变量导出到当前会话
此示例使用 Export-ModuleMember
cmdlet 将变量导出到当前会话中。如果没有 Export-ModuleMember
命令,则仅导出函数。
New-Module -ScriptBlock {$SayHelloHelp="Type 'SayHello', a space, and a name."; function SayHello ($name) { "Hello, $name" }; Export-ModuleMember -function SayHello -Variable SayHelloHelp}
$SayHelloHelp
Type 'SayHello', a space, and a name.
SayHello Jeffrey
Hello, Jeffrey
输出显示变量和函数都已导出到会话中。
示例 4:使动态模块可供 Get-Module 使用
此示例演示了您可以通过将动态模块通过管道传输到 Import-Module
来使动态模块可供 Get-Module
使用。
New-Module
创建一个通过管道传输到 Import-Module
cmdlet 的模块对象。 New-Module
的 Name 参数为模块分配一个友好的名称。由于 Import-Module
默认情况下不返回任何对象,因此该命令没有输出。 Get-Module
表示 GreetingModule 已导入到当前会话中。
New-Module -ScriptBlock {function Hello {"Hello!"}} -name GreetingModule | Import-Module
Get-Module
Name : GreetingModule
Path : d54dfdac-4531-4db2-9dec-0b4b9c57a1e5
Description :
Guid : 00000000-0000-0000-0000-000000000000
Version : 0.0
ModuleBase :
ModuleType : Script
PrivateData :
AccessMode : ReadWrite
ExportedAliases : {}
ExportedCmdlets : {}
ExportedFunctions : {[Hello, Hello]}
ExportedVariables : {}
NestedModules : {}
Get-Command hello
CommandType Name Definition
----------- ---- ----------
Function Hello "Hello!"
Get-Command
cmdlet 显示动态模块导出的 Hello
函数。
示例 5:生成具有导出函数的自定义对象
此示例演示如何使用 New-Module
的 AsCustomObject 参数生成具有表示导出函数的脚本方法的自定义对象。
New-Module
cmdlet 创建一个具有两个函数的动态模块:Hello
和 Goodbye
。 AsCustomObject 参数创建自定义对象,而不是 New-Module
默认生成的 PSModuleInfo 对象。此自定义对象保存在 $m
变量中。 $m
变量似乎没有分配值。
$m = New-Module -ScriptBlock {
function Hello ($name) {"Hello, $name"}
function Goodbye ($name) {"Goodbye, $name"}
} -AsCustomObject
$m
$m | Get-Member
TypeName: System.Management.Automation.PSCustomObject
Name MemberType Definition
---- ---------- ----------
Equals Method bool Equals(System.Object obj)
GetHashCode Method int GetHashCode()
GetType Method type GetType()
ToString Method string ToString()
Goodbye ScriptMethod System.Object Goodbye();
Hello ScriptMethod System.Object Hello();
$m.goodbye("Jane")
Goodbye, Jane
$m.hello("Manoj")
Hello, Manoj
通过管道将 $m
传送到 Get-Member
cmdlet 将显示自定义对象的属性和方法。输出显示该对象具有表示 Hello
和 Goodbye
函数的脚本方法。最后,我们调用这些脚本方法并显示结果。
示例6:获取脚本块的结果
此示例使用 ReturnResult 参数来请求运行脚本块的结果,而不是请求模块对象。新模块中的脚本块定义了 SayHello
函数,然后调用该函数。
New-Module -ScriptBlock {function SayHello {"Hello, World!"}; SayHello} -ReturnResult
Hello, World!
参数
-ArgumentList
指定参数数组,这些参数是传递给脚本块的参数值。有关 ArgumentList 行为的更多信息,请参阅 about_Splatting。
类型 :Object[]
别名:Args
位置:命名
默认值:None
必需的:False
接受管道输入:False
接受通配符:False
-AsCustomObject
指示此 cmdlet 返回表示动态模块的自定义对象。模块成员作为自定义对象的脚本方法实现,但不会导入到会话中。您可以将自定义对象保存在变量中并使用点表示法来调用成员。
如果模块有多个同名成员,例如函数和变量都命名为 A,则自定义对象只能访问每个名称的一个成员。
类型 :SwitchParameter
位置:命名
默认值:None
必需的:False
接受管道输入:False
接受通配符:False
-Cmdlet
指定此 cmdlet 从模块导出到当前会话的 cmdlet 数组。输入以逗号分隔的 cmdlet 列表。允许使用通配符。默认情况下,模块中的所有 cmdlet 都会被导出。
您无法在脚本块中定义 cmdlet,但如果动态模块从二进制模块导入 cmdlet,则可以包含 cmdlet。
类型 :String[]
位置:命名
默认值:None
必需的:False
接受管道输入:False
接受通配符:False
-Function
指定此 cmdlet 从模块导出到当前会话的函数数组。输入以逗号分隔的函数列表。允许使用通配符。默认情况下,模块中定义的所有函数都会被导出。
类型 :String[]
位置:命名
默认值:None
必需的:False
接受管道输入:False
接受通配符:True
-Name
指定新模块的名称。您还可以通过管道将模块名称传递给 New-Module。
默认值是自动生成的名称,以 __DynamicModule_
开头,后跟指定动态模块路径的 GUID。
String
位置:0
默认值:None
必需的:True
接受管道输入:True
接受通配符:False
-ReturnResult
指示此 cmdlet 运行脚本块并返回脚本块结果,而不是返回模块对象。
类型 :SwitchParameter
位置:命名
默认值:None
必需的:False
接受管道输入:False
接受通配符:False
-ScriptBlock
指定动态模块的内容。将内容括在大括号 ({}
) 中以创建脚本块。此参数是必需的。
ScriptBlock
位置:1
默认值:None
必需的:True
接受管道输入:False
接受通配符:False
输入
字符串
您可以通过管道将模块名称传递给此 cmdlet。
输出
PSModuleInfo
默认情况下,此 cmdlet 生成一个 PSModuleInfo 对象。
PS自定义对象
如果您使用 AsCustomObject 参数,它将生成一个 PSCustomObject 对象。
对象
如果使用 ReturnResult 参数,此 cmdlet 将返回动态模块中脚本块的计算结果。
笔记
PowerShell 包含以下 New-Module 别名:
所有平台:
nmo
猜你还喜欢
- 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