PowerShell技巧:PowerShell管道功能與腳本輸出
上半部分我們介紹了如何使用PowerShell查找管理動作,這里我們繼續介紹PowerShell中最有用的幾個技巧。
使用PowerShell管道和“this thing” cmdlet
PowerShell最有用的特性之一是它能夠獲取對象的信息,然后將結果作為另一條cmdlet的輸入執行一系列的操作。
這種從一個cmdlet到另外一個cmdlet的結果集的傳輸被稱為“管道輸出。”你可以使用鍵盤上反斜線鍵上方的管道字符“|”來完成管道的輸出。我們看到在上面的例子中,我用Get-Command的cmdlet來獲取命令的列表。然后通過管道輸出到命令Measure-Output中,這樣就獲得了通過Get-Command列出的對象數量的統計結果。
PowerShell中的管道功能還可以做更多的事情。大部分時間中,我們都是需要對一個結果子集執行一些操作。例如,我們可以列出當前運行的進程列表,然后只顯示Microsoft Excel的進程。對于這一點,我們使用管道和名為Where-Object的cmdlet,可以對每個對象進行檢查以篩選出那些能夠滿足某個特定條件的對象。
一個小的快捷方式:在PowerShell的腳本編寫和日常開發中,你經常會遇到字符“$_”。它有一個技術性比較強的名字,但不是非常直觀,所以我叫它“this thing”符號,因為你是根據“this thing”來要求PowerShell執行操作的。
讓我們繼續使用前面的例子,你會使用Get-Process列出當前所有的進程(這生成了一個字符版本的Windows任務管理器)。然后使用管道輸出(列出進程和信息,如一個進程占用的CPU資源,使用的內存情況等)給Where-Object,這就像一個過濾器。后面跟上使用花括號定義的標準條件。接下來,使用“this thing”符號,告訴PowerShell我們想要一些關于“this thing”的信息,跟上name參數,找出符合要求的進程名稱(圖3)。
圖3. 此例顯示了管理員在試圖使用“this thing”符號進行操作時看到的信息
這個例子中“–eq”就是等于。你可以使用其它的標準指定條件,在PowerShell中進行不同的嘗試,就會對它是如何工作的有更深入的理解。
如何觸發并保存腳本
另外一個PowerShell的技巧是如何觸發腳本。腳本就是將文本文件保存到文件系統中一個給定的位置,但它們必須有一個ps1的文件擴展名。在某些情況下,你可能還需要解除阻止正在運行的腳本,特別是如果你開始運行的腳本來自其它系統,或互聯網。
如果你需要執行某個任務的命令,可以通過將它們保存到記事本然后將文檔保存為擴展名為PS1的文件來生成腳本。一旦完成,你可能需要在Windows資源管理器中右鍵點擊保存的文件,在屬性頁上點擊“解除阻止”按鈕,告訴Windows這個腳本是可信的,并希望它直接運行而不用提示你,但是這一步并不是必需的。
如果你還不知道PowerShell,那就試著開始使用它。它將是Windows管理的下一個里程碑。你未來的職業發展可能依賴于它,所以立刻去體驗這些PowerShell的技巧吧!