PowerShell小技巧之使用New-Module命令动态创建对象
程序员文章站
2022-07-06 13:59:15
还记得当年怎样在powershell中动态创建对象吧?今天要分享的方法不敢自诩高大上,但也足以让new-object感到汗颜。
背景
在system center op...
还记得当年怎样在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 抗震救灾();