PowerShell小技巧之使用New-Module命令动态创建对象

所属分类: 脚本专栏 / PowerShell 阅读数: 604
收藏 0 赞 0 分享

还记得当年怎样在PowerShell中动态创建对象吧?今天要分享的方法不敢自诩高大上,但也足以让New-Object感到汗颜。

背景
在System Center Operation Manager中有个Management Pack,叫做:“Microsoft.SystemCenter.OperationsManager.SummaryDashboard”。在该MP中有个Discovery叫做:“Collect agent configurations”。该工作流中用到了一段脚本,其中使用了New-Module命令。

New-Module就是在内存中动态生成一个Module组件。用它来自定义对象有点大材小用了。

演习

$PLA = New-Module {
 $名称 = ‘中国人民解放军'
 $军区 = @('沈阳军区','北京军区','济南军区','南京军区','广州军区','成都军区','兰州军区')
 $兵种 = @('海军','空军','第二炮兵')
 
 function 保卫党
 {
  return $true
 }
 
 function 保卫人民
 {
 return $null
 }
 
 function 抗洪抢险
 {
 return $true
 }
 
 function 抗震救灾
 {
 return $true
 }
 
 function 确认兵种
 {
 param($某兵种)
 if ($this.兵种.Contains($某兵种)){
  return $true
  }
 return $false
 }
 Export-ModuleMember -Variable * -Function *
 
} -AsCustomObject


PS> $PLA

兵种                      军区                     名称                     
--                      --                     --                     
{海军, 空军, 第二炮兵}                {沈阳军区, 北京军区, 济南军区, 南京军区...}         中国人民解放军                  

PS> $PLA.确认兵种(‘陆军')
False
PS> $PLA | 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()         
兵种     NoteProperty System.Object[] 兵种=System.Object[]
军区     NoteProperty System.Object[] 军区=System.Object[]
名称     NoteProperty System.String 名称=中国人民解放军     
保卫人民    ScriptMethod System.Object 保卫人民();       
保卫党     ScriptMethod System.Object 保卫党();       
抗洪抢险    ScriptMethod System.Object 抗洪抢险();       
抗震救灾    ScriptMethod System.Object 抗震救灾();

更多精彩内容其他人还在看

PowerShell使用小技巧分享

本文给大家汇总了几个平时经常能够用到的PowerShell使用小技巧,包括修改Host文件、方法调用、查看powershell版本,有需要的小伙伴可以参考下。
收藏 0 赞 0 分享

PowerShell时间记录脚本

这篇文章主要介绍了PowerShell时间记录脚本的相关资料,非常简单实用,需要的朋友可以参考下
收藏 0 赞 0 分享

PowerShell中的加法运算详解

这篇文章主要介绍了PowerShell中的加法运算详解的相关资料,需要的朋友可以参考下
收藏 0 赞 0 分享

PowerShell打开或关闭光驱

这里给大家分享的是使用PowerShell实现打开或关闭光驱的小程序,大家也许根本用不到,这里只是个例子,让大家学习下如何操作windows API
收藏 0 赞 0 分享

浅谈PowerShell 捕获错误

这篇文章主要介绍了PowerShell脚本trap语句捕获错误的写法实例,包含几个代码实例,需要的朋友可以参考。
收藏 0 赞 0 分享

PowerShell中实现播放WAV音频文件

这篇文章主要介绍了PowerShell中实现播放WAV音频文件,本文直接给出实现代码,需要的朋友可以参考下
收藏 0 赞 0 分享

Powershell实现从注册表获取本地关联文件的扩展名

这篇文章主要介绍了Powershell实现从注册表获取本地关联文件的扩展名,本文直接给出实现代码,需要的朋友可以参考下
收藏 0 赞 0 分享

Powershell实现从注册表获取用户配置脚本分享

这篇文章主要介绍了Powershell实现从注册表获取用户配置脚本分享,本文直接给出实现脚本源码,需要的朋友可以参考下
收藏 0 赞 0 分享

Powershell脚本中包含文件资源的例子

这篇文章主要介绍了Powershell脚本中包含文件资源的例子,本文直接给出示例代码,本文脚本代码适应Powershell3.0及以后版本,需要的朋友可以参考下
收藏 0 赞 0 分享

Powershell中Finally语句用法示例

这篇文章主要介绍了Powershell中Finally语句用法示例,本文用一个播放音乐的脚本为例子,使用Finally语句在异常结束操作时执行清理操作,需要的朋友可以参考下
收藏 0 赞 0 分享
查看更多