對象管道是ps的一個很方便的功能,使用對象的一個主要優點是,它使得用管道傳輸命令(即,將一個命令的輸出作為輸入傳遞到另一命令)容易得多。通訊通常需要字串操作,以便將輸出從一種格式轉換為另一種格式,並刪除標題和欄位標題。當然我最喜歡的就是 xxxx|get-member 了,碰到不知道有什麼方法能用的時候,這個管道(get-member)可以給你列出所有屬性和方法,見名知意的猜一下好了。
Windows PowerShell 提供了一個基於對象而不是基於文本的新互動模型。接收對象的 cmdlet 可以直接作用於其屬性和方法,而無需進行轉換或操作。使用者可以通過名稱引用對象的屬性和方法,而不是計算資料在輸出中的位置。
下面來幾個例子
例1:IpConfig 命令擷取IPAddress資訊。
是ipconfig的基本用法。
如果我不想要那麼多資訊,只想要本機IP怎麼辦呢?這時候可以用Findstr 來處理下。處理思想,首先擷取到上面看到的所有資訊,然後對每行資訊進行Findstr 處理,如果包含“Address”,那麼就是我要的內容。具體寫法如下:
ipconfig | findstr "Address"
擷取MAC地址呢?
最後給大家介紹下我最喜歡的一個用法 xxxx|get-member
當你拿到一個對象,然而你又不知道這個對象有哪些方法可用,想猜測一下到底能不能擷取到什麼資訊,能不能實現某些功能的時候,xxxx|get-member最有用了。
例如,get-service可以擷取到某個service的資訊,可是我不知道怎麼啟動這個service怎麼辦。物件導向的思想嗎~拿到對象再說!肯定很多人都會這樣入手。可是當你拿到service對象以後,接下來怎麼辦?service對象都提供了哪些方法?get-member!如下
1. 擷取MSDTC服務資訊,通過format-list 方法輸出所有屬性資訊,可以看到Status是Running的。
2. 我們想要把它關閉。可是不知道怎麼處理,那我我們先來看一下他都提供了我們什麼方法。
可以看到,get-member把所有的成員都給大家列出來了。OK,我們發現他有一個Method,叫做Stop。我想大多數人都能猜到幹什麼用的吧這個方法。
所以我來實驗一下。
我們首先拿到msdtc的service對象,然後調用stop方法(方法,當然要加括弧)。
然後輸出了新的狀態資訊,你會發先status變成了stopped。我們成功的關閉了服務。很有用的方法啊。
對象管道當然還有好多用法,也有好多常用方法,不過等到用到再說吧。