PowerShell 添加 自定义的ScriptProperty 属性

news/2024/7/16 8:52:37

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

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

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

wKioL1dCSK7jeD3aAACh-4Cs5So575.png


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


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


首先加载我的模块


wKiom1dCRqCzlRHcAAAlNG5wLk0279.png


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

wKioL1dCR5Ozgts7AAAbG2g2QMU445.png


简单测试一下

wKiom1dCRqWyP_AdAAAoN7k6uFY795.png


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

wKioL1dCR5nAsAURAAB2AS1ZmUE773.png


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

<?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的文件

wKioL1dCTHSSXP6RAACDx_WpZk0925.png


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

wKiom1dCRqvyHRvbAACRtJZdpqo604.png

测试一下 成功

wKioL1dCR56zXuSDAAAc_LZ4YLg976.png


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

wKioL1dCR6Cg0xHuAABn2BZGrUw654.png


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

wKiom1dCRrKiqIMJAABcYcuXrZQ067.png


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

wKiom1dCRrSxb9hZAACGpez-3hg766.png


参考资料:

《Learn PowerShell ToolMaking in a month of lunches》


http://www.niftyadmin.cn/n/3542232.html

相关文章

python 爬虫框架_高效的Python爬虫框架有哪些?

Python是现在非常流行的编程语言&#xff0c;而爬虫则是Python语言中最典型的应用&#xff0c;下面神龙给大家分享几种高效的Python爬虫框架&#xff0c;看看你是否都用过呢&#xff1f;高效的Python爬虫框架有哪些&#xff1f;1.ScrapyScrapy是一个为了爬取网站数据&#xff0…

php tinyme_php – TinyMCE和Laravel

我正在尝试将tinyMCE与我的Laravel项目一起使用.问题是当我存储新文章时,html标签不起作用.它们像我的laravel视图上显示的纯文本一样出现&#xff1a;这是在create.blade.php中实现的代码&#xff1a;tinymce.init({selector : "textarea",plugins : ["advlist…

html5图像映射坐标怎么看,html5创建图像映射时图形的croods怎么确定

满意答案kengdl2016.10.26采纳率&#xff1a;48% 等级&#xff1a;9已帮助&#xff1a;165人根据图像映射的原理可知&#xff0c;这是一个圆形区域&#xff0c;只要确定圆心坐标和圆形的半径就行&#xff0c;那(x、y、r)的值该怎么确定呢&#xff1f;在此提供两种方法&#…

让硬盘摆脱四大怪异现象的骚扰

让硬盘摆脱四大怪异现象的骚扰 读取硬盘中的信息或写入数据到硬盘中&#xff0c;几乎是我们每天要做的“必修课”。可是在频繁访问硬盘的过程中&#xff0c;我们时不时地会发现一些怪异的“骚扰”袭向硬盘&#xff0c;在这些怪异“骚扰”面前&#xff0c;不少朋友常常表现得一筹…

主流公司www服务器简介(未完整)

查看www服务器的软件类型可以直接使用浏览器查看response响应头中的Server信息&#xff0c;这样必须把整个页面请求下来。由于一直使用linux&#xff0c;所以一般采用curl -I URL_ADDRESS 去获取响应头。 几个网站的服务器&#xff1a; www.google.com: Server: gws www.goog…

用python编写缠论中枢_【量化投资】缠论面面观(附Python源码)

而图7&#xff0c;就给出了经过以上处理&#xff0c;没有包含关系的图形中&#xff0c;三相邻K线之间可能组合的一个完全分类&#xff0c;其中的二、四&#xff0c;就是分别是顶分型和底分型&#xff0c;一可以叫上升K线&#xff0c;三可以叫下降K线。所以&#xff0c;上升的一…

Extjs DOM操作的几个类

Extjs提供了非常完善的DOM操作方法&#xff0c;可以方便的操作DOM。另外Extjs还可以方便的查询DOM元素&#xff0c;并把这些DOM元素封装成Ext.Element对象&#xff0c;通过Element对象我们可以操作DOM元素。下面来看一下Extjs操作DOM的几个类&#xff1a; Ext.Element 、Ext.Do…

php auth和rbac区别,thinkphp 比RBAC更好的权限认证方式(Auth类认证) thinkphp 怎么做登录验证...

thinkphp的auth权限和rbac有什么区别相同点: 1.两种都是基于角色权限控制 2.都是同一个用户可属于多个角色或用户组 不同点: Rbac: 1.Rbac是基于节点控制,根据3级节点,module,controller,action,节点类似与树形结构,3级节点间相互有关联 2.表关系:用户表->用户角色关联表-&g…