Power Shell 學習筆記(二)所謂對象

來源:互聯網
上載者:User
處理對象

雖然您最初可能沒有意識到,但是在 Windows PowerShell 中工作時,所使用的是 .NET 對象。隨著您經驗的增加,對象處理能力變得更明顯,而且您發現自己使用的是對象,甚至用對象進行思考。

從技術上講,.NET 對象是 .NET 類的執行個體,包含資料以及與該資料關聯的操作。但是,可以將對象視為具有屬性(與屬性類別似)和方法(可以對對象執行的操作)的資料實體。

例如,在 Windows PowerShell 中擷取服務時,實際上是擷取表示該服務的對象。查看有關服務的資訊時,所查看的是其服務物件的屬性。此外,啟動服務時(即,在將服務的 Status 屬性更改為“started”時),所使用的是服務物件的方法。

類型相同的所有對象都具有相同的屬性和方法,但是對象的每個執行個體可能具有不同的屬性值。例如,每個服務物件都具有 Name 和 Status 屬性。但是,每個服務都可以具有不同的名稱和不同的狀態。

準備就緒後,瞭解對象是很容易的。若要查明 cmdlet 正擷取對象的類型,請使用管道運算子 (|) 將“get”命令的結果發送到 Get-Member 命令。例如,以下命令將 Get-Service 命令檢索的對象發送到 Get-Member。

get-service | get-member

Get-Member 顯示有關服務物件的資訊,其中包括對象的類型名稱及其屬性和方法的列表。

若要擷取有關對象類的資訊,請在 MSDN 中複製並粘貼類型名稱,如 System.ServiceProcess.ServiceController。找到類後,可以閱讀 MSDN 副主題,以瞭解基於該類的對象(如 Windows PowerShell 中的對象)的屬性和方法。

批註:

其實仔細觀察一下,就可以猜到他的處理思想。其實每一個cmdlet(Get)擷取到得資訊都是通過一個.net的Object對象形式返回的。你可以理解為,我們在用ps的指令碼寫cs的代碼。只不過程式不需要編譯。ps的處理思想就是基於對象這樣一種方式。首先,得到對象,然後通過(Property,不需要我解釋了吧)設定對象,通過(Method)操作對象。Get-member是一個很有用的方法,當你擷取到一個對象,不知道可以對他進行什麼操作的時候,試著用一下他好了。我一般記不住這麼多屬性和方法的,多數都是想好思路,然後調試一下指令碼。

若要尋找特定對象的所有屬性的值,請使用管道運算子 (|) 將“get”命令的結果發送到 Format-List 或 Format-Table 命令。將 format cmdlet 的 Property 參數與表示所有的值 (*) 一起使用。例如,若要尋找系統上 Schedule 服務的所有屬性,請鍵入:

get-service schedule | format-list -property *

以下顯示一個結果樣本。

批註:

首先擷取到 schedule這個Service的對象,然後設定一下輸出的List的Format,格式為只顯示Property(和它的值)。

最初學習 Windows PowerShell 時,無需瞭解有關對象的任何資訊,但是要意識到該概念。您將很快能夠充分利用對象。

 

瞭解對象:Get-Member

Get-Member 是最有用的 cmdlet 之一,它顯示有關命令返回的 .NET 對象的資訊。該資訊包括對象的類型、屬性和方法。

若要使用 Get-Member,請使用管道運算子 (|) 將命令結果發送到 Get-Member。例如:

get-service | get-member

此命令顯示 Get-Service 實際上返回了一組 System.ServiceProcess.ServiceController 對象 -- 電腦上的每個服務都有一個對象。

此資訊看起來技術性很強,但是它實際上非常實用。

· 通過類型名稱(如“System.ServiceProcess.ServiceController”)可以知道 cmdlet 返回什麼類型的 .NET 對象。若要擷取有關此 .NET 類中對象的資訊,請將類型名稱粘貼在 MSDN 上的“Search”(搜尋)文字框中。關聯的 MSDN 主題包括有關此類中對象的屬性和方法的資訊,其中包括 Get-Service 返回的對象。

· Property 類型表示對象的屬性。每個屬性的值是有關服務物件的資訊。例如,ServiceController 對象具有 CanPauseAndContinue 屬性。該屬性的 MSDN 說明解釋,該屬性指示是否可以暫停和恢複服務。

若要列出特定服務的屬性值請鍵入:

(get-service <服務名稱>).<屬性名稱>

例如:

(get-service MSSQLServer).canpauseandcontinue

若要顯示 MSSQLServer 服務的 CanPauseAndContinue 屬性的名稱和值列表,請鍵入:

get-service MSSQLServer| format-list -property name, CanPauseAndContinue

若要顯示 MSSQLServer 服務的所有屬性值的列表,請鍵入:

get-service MSSQLServer | format-list -property *

若要顯示所有服務的 CanPauseAndContinue 屬性的名稱和值表,請鍵入:

get-service | format-table -property name, CanPauseAndContinue

· Method 類型表示對象的方法,即可以對對象執行的操作。例如,ServiceController 對象具有 Stop 方法,使用該方法可以停止服務。

若要調用服務物件的方法,請使用以下格式。(務必包括圓括弧)。

(get-service <服務名稱>).<方法名稱>()

(get-service MSSQLServer ).stop()

同理

(get-service MSSQLServer ).start()

有關 Get-Member 命令的資訊,請鍵入:

get-help get-member -detailed。

如果熟悉.net編程的人員的話,很容易上手吧。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.