PowerShell 添加 自定义的ScriptProperty 属性

之前的博客豆子创建了一个自定义的PowerShell对象 http://beanxyz.blog.51cto.com/5570417/1772977

并且生成了对应的manifest文件和模块 http://beanxyz.blog.51cto.com/5570417/1773382

如果想给自己定义的这个对象添加新的属性类型,可以创建一个新的ps1xml文件。这个文件的模板可以参考PowerShell自带的types.ps1xml 文件。这个默认文件位于$pshome下面。

PowerShell 添加 自定义的ScriptProperty 属性


现在来看个例子如何添加。


比如说,我想添加一个scriptmethod的属性 Canping(),这个属性返回一个bool值,如果能ping通为真,不能ping通为假。


首先加载我的模块


PowerShell 添加 自定义的ScriptProperty 属性


我之前已经定义了一个function,这个function会返回一系列计算机的信息。

PowerShell 添加 自定义的ScriptProperty 属性


简单测试一下

PowerShell 添加 自定义的ScriptProperty 属性


看看类型,可以看见他的TypeName是 Yuan.systeminfo,这个不是默认的PSCustomObject类型,而是我自己定义的。他当前的属性并没有canping()这个scriptmethodproperty类型。

PowerShell 添加 自定义的ScriptProperty 属性


首先来创建一个ping.ps1xml的文件,如下所示,注意对象名字要匹配。另存在我的模块目录下。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?xml version="1.0" encoding="utf-8" ?>
<Types>
<Type>
<Name>Yuan.SystemInfo</Name>
<Members>
<ScriptMethod>
<Name>CanPing</Name>
<Script>
Test-Connection -ComputerName $this.ComputerName -Quiet
</Script>
</ScriptMethod>
</Members>
</Type>
</Types>

然后手动更新一下typedate的文件

PowerShell 添加 自定义的ScriptProperty 属性


重新加载一下模块,可以看见这个function已经有新的属性了

PowerShell 添加 自定义的ScriptProperty 属性

测试一下 成功

PowerShell 添加 自定义的ScriptProperty 属性


多来几个计算机名测试一下

PowerShell 添加 自定义的ScriptProperty 属性


最后把更新一下我的manifest文件,添加对应的typetoprocess路径

PowerShell 添加 自定义的ScriptProperty 属性


重新加载模块之后工作正常。

PowerShell 添加 自定义的ScriptProperty 属性


参考资料:

《Learn PowerShell ToolMaking in a month of lunches》






本文转自 beanxyz 51CTO博客,原文链接:http://blog.51cto.com/beanxyz/1782007,如需转载请自行联系原作者

上一篇:爱奇艺2020校招Java方向笔试题


下一篇:多线程的基础应用