从零开始学PowerShell(9)创建PowerShell对象
我們之前有一篇文章寫過如何獲取對象的信息,但是從沒有說過如何創建一個PowerShell對象。正巧也看到很多剛學PowerShell的朋友問起這個問題,今天就來說一說如何創建PowerShell對象。
從抽象層面來說,在PowerShell里哪怕我們定義一個普通變量也已經是創建了一個對象。那么確切的說我們現在是想創建一個實例對象和COM對象。
在PowerShell里創建對象可以使用New-Object cmdlet來創建一個初始對象,要知道怎么用,還記得我們從零開始學PowerShell 系列開篇提到的嗎?不知道怎么用就用Get-Help看看。
可以從給出的使用語法看出,New-Object大致可以創建兩種方式的對象,一種是基于.NET Framework的實例類對象,另一種則是基于COM對象的。所以,我們就分別來看看如何創建這兩種對象。
.NET Framework我想不必多說,微軟自家的大基石Windows類框架庫,我們的PowerShell底層就是構建于此。所以PowerShell自然也能做到調用.NET Framework中的類庫,而因為.NET提供了龐大的數據類庫,所以我們就可以使用PowerShell去做到一些PowerShell目前還沒有提供的功能。
比如我們想創建一個日期類庫怎么做呢?可以像下面這樣去新建一個日期實例對象。
這里我們配合了使用了兩個參數TypeName和ArgumentList,TypeName是用于指定你基于哪個.NET Framework來創建實例對象,而ArgumentList可以未必每次都指定,這取決于我們的類函數是否每次生成實例對象時對有必要傳參數。
有人可能要問,你怎么知道要傳哪些參數呢?那是因為我去微軟的MSDN查DateTime Structure類的信息,DateTime的構造函數提供了好幾種參數構造方法,于是我選擇了新建實例對象時,順便初始化,年月日時分秒數據對象。
最后$DateTime就是所創建的對象了,我們輸出這個對象可以看到我們之前傳遞的日期信息。
不過,你是否還記得我們之前有篇文章提到如何獲取對象里的信息嗎?沒錯,就是使用Get-Membercmdlet來查看對象含有哪些數據信息。?
我們在這里發現有一個AddDays方法挺有意思,我們直接使用,并傳入一個參數10看看。它可以很方便的讓我們知道之前的日期往后推10天是什么日期。
接下來要說的是以創建COM組件的方式創建一個對象,可能有人不是很清楚什么是COM組件,簡單的說在早期各種產品,軟件里有許許多多組件,但是很多功能組件安裝卸載變的麻煩。為此就出現了COM組件,就像樂高積木一樣,人們就可以開發COM組件像接口一樣與各種組件按照需要組合成一個功能完善的軟件。
下面我摘了一段百度百科給需要了解的人:
COM component(COM組件)是微軟公司為了計算機工業的軟件生產更加符合人類的行為方式開發的一種新的軟件開發技術。在COM構架下,人們可以開發出各種各樣的功能專一的組件,然后將它們按照需要組合起來,構成復雜的應用系統。由此帶來的好處是多方面的:可以將系統中的組件用新的替換掉,以便隨時進行系統的升級和定制;可以在多個應用系統中重復利用同一個組件;可以方便的將應用系統擴展到網絡環境下;COM與語言,平臺無關的特性使所有的程序員均可充分發揮自己的才智與專長編寫組件模塊。
創建COM實例對象和之前創建基于.NET Framework的方式基本差不多,我們來快速用基于COM組件的方式創建一個實例對象,這里我們只需要配合?COMObject參數指定專門的COM 對象(注:在我們創建新對象的時候TypeName參數是不能和COMObject同時混用的)。
我們用Get-Member查看對象信息后打算使用IsServiceRunning方法,這個方法是用來查看當前要查看的某個服務是否還在運行中。?
PowerShell的強大也正是因為構建于背后強大的類型模型框架,因此我們可以借助.NET Framework或者COM組件對象來完成PowerShell暫時還無法完成的功能。?
新人創作打卡挑戰賽發博客就能抽獎!定制產品紅包拿不停!總結
以上是生活随笔為你收集整理的从零开始学PowerShell(9)创建PowerShell对象的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: atom使用技巧
- 下一篇: 网络流最大流Edmonds-Karp算法