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

还记得当年怎样在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 抗震救灾();
(0)

相关推荐

  • Linux 命令每天必学(34)之du命令

    Linux du命令也是查看使用空间的,但是与df命令不同的是Linux du命令是对文件和目录磁盘使用的空间的查看,还是和df命令有一些区别的. du /bin和du -s /bin有什么区别呢? -s 就是summary, 显示该目录占用空间的总和 区别在于/bin下面有子目录的时候, 因为/bin没有子目录所以结果相同, 比如 du /etc会看到一大堆输出 du -s /etc 就只有一行输出 1.命令格式: du [选项][文件] 2.命令功能: 显示每个文件和目录的磁盘使用空间. 3

  • Oracle常用dump命令,记录一下备查。

    一.Memory Dumps 1).Global Area ALTER SESSION SET EVENTS 'immediate trace name global_area level n'; 1 包含PGA 2 包含SGA 4 包含UGA 8 包含indrect memory 2).Library Cache ALTER SESSION SET EVENTS 'immediate trace name library_cache level n'; 1 library cache统计信息

  • Linux tcpdump命令的用法详细解析

    英文原意是dump traffic on a network ,即截获网络上的数据报,可以根据指定的网络接口来截获不同的数据报.它会输出在某个网络接口上符合匹配表达式的报内容的描述.当tcpdump完成抓包后,会打印出类似下面的内容: 9 packets captured56 packets received by filter17 packets dropped by kernel 当然,在读取网络上的数据包时,得需要特权,比如linux上的超级用户 tcpdump用法 tcpdump -A

  • Mysql导入导出工具Mysqldump和Source命令用法详解

    在PHP网站开发中,时常遇到Mysql数据库备份或数据库迁移工作,这时Mysql怎么导入导出数据库中的数据就非常关键,Mysql本身提供了命令行导出工具Mysqldump和Mysql Source导入命令进行SQL数据导入导出工作,通过Mysql命令行导出工具Mysqldump命令能够将Mysql数据导出为文本格式(txt)的SQL文件,通过Mysql Source命令能够将SQL文件导入Mysql数据库中,下面通过Mysql导入导出SQL实例详解Mysqldump和Source命令的用法. M

  • Linux tcpdump命令详解大全

    简介 用简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者的定义对网络上的数据包进行截获的包分析工具. tcpdump可以将网络中传送的数据包的"头"完全截获下来提供分析.它支持针对网络层.协议.主机.网络或端口的过滤,并提供and.or.not等逻辑语句来帮助你去掉无用的信息. 实用命令实例 默认启动 tcpdump 普通情况下,直接启动tcpdump将监视第一个网络接口上所有流过的数据包. 监视指定网络接口的数据包 tcpdu

  • mysqldump命令导入导出数据库方法与实例汇总

    mysqldump命令的用法 1.导出所有库 系统命令行 mysqldump -uusername -ppassword --all-databases > all.sql 2.导入所有库 mysql命令行 mysql>source all.sql; 3.导出某些库 系统命令行 mysqldump -uusername -ppassword --databases db1 db2 > db1db2.sql 4.导入某些库 mysql命令行 mysql>source db1db2.s

  • Linux tcpdump操作命令详解

    简介 用简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者的定义对网络上的数据包进行截获的包分析工具. tcpdump可以将网络中传送的数据包的"头"完全截获下来提供分析.它支持针对网络层.协议.主机.网络或端口的过滤,并提供and.or.not等逻辑语句来帮助你去掉无用的信息. 实用命令实例 默认启动 复制代码 代码如下: tcpdump 普通情况下,直接启动tcpdump将监视第一个网络接口上所有流过的数据包. 监视指定网络接

  • 使用MySQL MySqldump命令导出数据时的注意事项

    今天使用mysqldump命令备份数据的时候出现了一个问题. 一开始迁移 Discuz 7 论坛的 mysql 数据库时,采用 mysqldump 命令的时候一切顺利,但导入的时候却遇到了  ERROR 1062 (xxxxx) at line 1262: Duplicate entry 'XXX' for key 'XXX' 错误,并停在原地. 对于遇到相同错误的朋友千万别第一时间就尝试用 –force 参数强行导入(除非你原来的数据库已经崩溃).因为这样做的话,即使导入了,也会有一大片数据丢

  • linux使用tcpdump命令监视指定网络数据包的方法

    打印本地主机与Berkeley网络上的主机之间的所有通信数据包(nt: ucb-ether, 此处可理解为'Berkeley网络'的网络地址,此表达式最原始的含义可表达为: 打印网络地址为ucb-ether的所有数据包) 复制代码 代码如下: tcpdump net ucb-ether 打印所有通过网关snup的ftp数据包(注意, 表达式被单引号括起来了, 这可以防止shell对其中的括号进行错误解析) 复制代码 代码如下: tcpdump 'gateway snup and (port ft

  • mysql数据库备份及恢复命令 mysqldump,source的用法

    还原一个数据库:mysql -h localhost -u root -p123456 www<c:\www.sql 备份一个数据库:mysqldump -h localhost -u root -p123456 www > d:\www2008-2-26.sql //以下是在程序中进行测试 //$command = "mysqldump --opt -h $dbhost -u $dbuser -p $dbpass $dbname | gzip > $backupFile&qu

  • MySQL mysqldump命令使用详解

    经常地备份可以帮助防止宝贵数据地丢失:另外一个原因是,也许您希望导出数据来共享. 在这个信息技术不断成长的世界中,共享数据变得越来越常见.    比方说Macmillan USA维护护着一个将要出版的书籍的大型数据库.这个数据库在许多书店之间共享,这样他们就知道哪些书将会很快出版.医院越来越走向采用无纸病历记录,这样这些病历可以随时跟着你.世界变得越来越小,信息也被共享得越来越多.有很多中导出数据得方法,它们都跟导入数据很相似.因为,毕竟,这些都只是一种透视得方式.从数据库导出的数据就是从另一端

  • PHP使用mysqldump命令导出数据库

    PHP使用外部命令导出数据库,代码很简单,就不多废话了 <?php // $dumpFileName目录要有可写权限 $DbHost = 'localhost'; $DbUser = 'root'; $DbPwd = '123456'; $DbName = 'a'; $fileName = $DbName . '_MySQL_data_backup_' . date('YmdHis) . '.sql'; $dumpFileName= "/var/$fileName"; heade

随机推荐