處理對象
雖然您最初可能沒有意識到,但是在 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編程的人員的話,很容易上手吧。