之前的博客豆子創建了一個自定義的PowerShell對象 http://beanxyz.blog.51cto.com/5570417/1772977
並且生成了對應的manifest文件和模塊 http://beanxyz.blog.51cto.com/5570417/1773382
如果想給自己定義的這個對象添加新的屬性類型,可以創建一個新的ps1xml文件。這個文件的模板可以參考PowerShell自帶的types.ps1xml 文件。這個默認文件位於$pshome下面。
現在來看個例子如何添加。
比如說,我想添加一個scriptmethod的屬性 Canping(),這個屬性返回一個bool值,如果能ping通爲真,不能ping通爲假。
首先加載我的模塊
我之前已經定義了一個function,這個function會返回一系列計算機的信息。
簡單測試一下
看看類型,可以看見他的TypeName是 Yuan.systeminfo,這個不是默認的PSCustomObject類型,而是我自己定義的。他當前的屬性並沒有canping()這個scriptmethodproperty類型。
首先來創建一個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的文件
重新加載一下模塊,可以看見這個function已經有新的屬性了
測試一下 成功
多來幾個計算機名測試一下
最後把更新一下我的manifest文件,添加對應的typetoprocess路徑
重新加載模塊之後工作正常。
參考資料:
《Learn PowerShell ToolMaking in a month of lunches》