PowerShell 的管道機制與Linux 下的Shell管道機制相同,都是将前一個指令的輸出作為後一個指令的輸入,這樣就可以支援類似鍊式程式設計的程式設計模式。比如我們擷取某台Server上的服務,對某些處于停止狀态的服務進行重新開機。這時候我們的政策是擷取所有的服務清單,然後使用Where-Object 接受服務清單,篩選Service狀态是Stopped的進行重新開機。類似這種處理的需求是非常常見的,其中一個例子如下。
1)鍊式程式設計
首先,我們擷取字首為sql的服務,然後使用管道篩選狀态是 "Stopped"的服務,然後我們再使用管道對每個處于Stopped狀态的服務進行重新開機。這樣三個步驟,簡簡單單的兩個PowerShell 管道就解決了,其間接性可見一斑。注:這裡的兩處錯誤是由于服務無法啟動和Server拼寫錯誤導緻,與管道無關。
2)格式化輸出
PowerShell 的管道可以用來做格式化輸出,通常是按照清單和按照Table形式進行輸出,這種應用也是很常見的。
這樣我們就得到了清單形式的結果。下面我們嘗試擷取Table形式的結果。
注:鍊式程式設計章節的第一條語句的執行結果就是Table形式的,故不再贅述。
3)對結果進行分析統計
我們可以根據檔案的字尾名統計檔案數。
4)使用管道輸出指令執行結果
運作結果如下,注:新增了ServiceList.xls
這是目前總結的幾種管道的應用,後面會繼續深入探讨。