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