在這個版本的Geek School中,我們將研究格式化、過濾和比較管道中的物件。
請務必閱讀本系列之前的文章:
整個星期請繼續關注本系列的其餘部分。
當我剛開始使用PowerShell時,我認為一切都很神奇,但事實上,瞭解引擎蓋下的情況只需要一點時間。PowerShell格式化系統也是如此。實際上,如果執行Get-Service cmdlet,則生成的輸出僅顯示3個屬性:Status、Name和DisplayName。
但是如果透過管道Get Service來獲取成員,您會看到ServiceController物件不僅僅具有這三個屬性,那麼會發生什麼呢?
答案就在一個隱藏檔案中,該檔案定義了大多數內建cmdlet如何顯示其輸出。要獲得理解,請在shell中鍵入以下內容並按enter鍵。
notepad C:\Windows\System32\WindowsPowerShell\v1.0\DotNetTypes.format.ps1xml
如果使用notepad的Find函式,我們可以透過搜尋ServiceController型別,快速跳到詳細說明Get-Service cmdlet輸出的部分。
突然,您可以看到引擎蓋下的PowerShell正在格式化管道中ServiceController型別的任何物件,並建立一個包含三列的表:Status、Name和DisplayName。但是,如果您處理的型別在該檔案或任何其他格式檔案中沒有條目,該怎麼辦?那麼,其實很簡單。如果來自管道的物件具有5個或更多屬性,則PowerShell將在列表中顯示該物件的所有屬性;如果該物件的屬性少於5個,則將在表中顯示這些屬性。
如果您對物件或型別的預設格式不滿意,可以使用自己的格式。要做到這一點,您需要知道三個cmdlet。
Format-Wide只是獲取物件的集合,並顯示每個物件的單個屬性。預設情況下,它將查詢name屬性;如果物件不包含name屬性,則在按字母順序對屬性排序後,它將使用物件的第一個屬性。
Get-Service | Format-Wide
如您所見,它也預設為兩列,不過您可以指定要使用的屬性以及要顯示的列數。
Get-Service | Format-Wide -Property DisplayName -Column 6
如果預設情況下某個內容被格式化為表,則始終可以使用Format-list cmdlet將其切換到列表檢視。讓我們看一下Get-processcmdlet的輸出。
這個表格檢視實際上非常適合這種資訊,但是讓我們假設我們想以列表形式檢視它。我們真正要做的就是用管道把它格式化。
Get-Process | Format-List
如您所見,預設情況下,列表中只顯示四個專案。要檢視物件的所有屬性,可以使用萬用字元。
Get-Process | Format-List –Property *
或者,您可以只選擇所需的屬性。
Get-Process | Format-List –Property name,id
另一方面,Format Table獲取資料並將其轉換為表。由於Get程序中的資料已經是表的形式,因此我們可以使用它輕鬆地選擇要顯示在表中的屬性。我使用AutoSize引數使所有的資料都適合一個螢幕。
Get-Process | Format-Table name,id –AutoSize
使用基於物件的管道最好的一點是,您可以在任何階段使用Where-object cmdlet從管道中過濾物件。
Get-Service | Where-Object {$_.Status -eq “Running”}
使用where物件實際上非常簡單。$\表示當前管道物件,您可以從中選擇要篩選的屬性。在這裡,我們只保留Status屬性等於Running的物件。在篩選指令碼塊中可以使用幾個比較運算子:
可以在about\u概念幫助檔案中檢視完整列表和更多資訊,但是要習慣Where物件語法確實需要一些時間。這次就這些了!
Windows PowerShell具有內建的命令歷史記錄功能,可提供有關已執行命令的詳細資訊。與命令提示符一樣,PowerShell只記住當前會話的命令歷史記錄。 如何使用命令列緩衝區 相關:極客學校:學習如何用PowerShell自動化Windows PowerShel...
...的Windows功能,但今天我們將向您展示如何在windows8中透過PowerShell命令列執行相同的操作。 從powershell管理windows可選功能 您首先要做的是檢視您啟用了哪些功能,為此,我們需要將Get-WindowsOptionalFeature cmdlet的輸出傳遞到管道中...
...以輕鬆地重新命名一個或多個檔案,但使用命令提示符或PowerShell,您還可以執行更多操作。再加上第三方重新命名工具,可能性是無窮的。讓我們看看每個選項及其工作原理。 在windows資源管理器中重新命名多個檔案 Windows資...
....1和7上執行此操作的幾種不同方法。 簡單的方法:使用powershell命令 相關:極客學校:學習如何用PowerShell自動化Windows PowerShell是Windows中最強大的工具之一,所以它當然可以做一些簡單的事情,比如列出你安裝的程式。事實上...
Windows7增加了PowerShell,一種比命令提示符更強大的命令列shell和指令碼語言。自Windows7以來,PowerShell變得更加突出,它甚至成為Windows10的預設選擇。 PowerShell比傳統的命令提示符更復雜,但它也更強大。命令提示符明顯不如Linux...
我們的極客學校文章可能會變得相當複雜,沒有理由在你自己的臺式電腦上做大量瘋狂的事情。相反,你可以像我們一樣建立虛擬機器來進行所有測試。下面是如何做到這一點。 您甚至可以將多個虛擬機器連線在一起,因此只...
...的計算機上一次啟動的時間。在上一次安裝Geek School for PowerShell時,我們將編寫一個可重用的PowerShell命令來完成同樣的任務。 請務必閱讀本系列之前的文章: 瞭解如何使用PowerShell自動化Windows 學習在PowerShell中使用cmdlet 學習如...
PowerShell為您提供了兩種擴充套件shell的方法。您可以使用管理單元,它是二進位制的,並且是用成熟的程式語言(如C#)開發的,也可以使用模組,它可以是二進位制的,也可以是基於指令碼的。 請務必閱讀本系列之前的文章...
PowerShell有四種類型的作業—後臺作業、遠端作業、WMI作業和計劃作業。加入我們,瞭解它們是什麼以及如何使用它們。 請務必閱讀本系列之前的文章: 瞭解如何使用PowerShell自動化Windows 學習在PowerShell中使用cmdlet 學習如何在Po...
由於PowerShell基於.Net框架,並結合了各種其他技術,如WMI和CIM,因此實現同一目標的方法總是不止一種。快來加入我們,學習如何選擇最佳的方法來完成我們的任務。 請務必閱讀本系列之前的文章: 瞭解如何使用PowerShell自動...