从零开始学PowerShell(5)自定义格式化信息
我們已經(jīng)基本了解了大部分在PowerShell中的格式化輸出命令的使用,但是我們之前做的內(nèi)容的格式化也僅僅是針對(duì)現(xiàn)有輸出的內(nèi)容做一些排版格式的輸出,在某些場(chǎng)景需求下,這樣的排版還是顯得過于單調(diào)。所以今天要講一下如何自定義格式化信息。這是個(gè)很有趣的話題,所以單獨(dú)放在了一篇文章里講。
PowerShell輸出的信息內(nèi)容其實(shí)默認(rèn)是經(jīng)過排版的,基本以表單的形式,像下面這樣。
為了更好的說明自定義格式化信息的用意,我來假設(shè)一個(gè)場(chǎng)景需求。我需要羅列出Id值大于2000的進(jìn)程信息,但一定要輸出的信息給別人一看就明白,該怎么做呢?我們都知道,表單能讓人一眼就看明白主要取決于行列標(biāo)題,一個(gè)清晰明確的行標(biāo)題名稱能給閱讀者一目了然的作用,所以我們就要從行列標(biāo)題下手。
老樣子,先放出實(shí)現(xiàn)的代碼行如下。
Get-Process | Where-Object{$_.Id -gt 2000} | Format-Table ProcessName, @{Expression={$_.Id}; Name="Id>2000"}我們從輸出的信息結(jié)果就可以看到,ID那一欄的行標(biāo)題被我修改為了了Id>2000我可以把這個(gè)輸出傳遞給任何需要這個(gè)場(chǎng)景的人,他們一看就知道這一列的信息羅列的是Id值大于2000的進(jìn)程信息。
現(xiàn)在讓我們來分析下這個(gè)命令行到底做了什么,整個(gè)命令行的邏輯是一開始我們用Get-Process | Where-Object{$_.Id -gt 2000}完成最基本的條件過濾,過濾出所有Id值大于2000的進(jìn)程信息。
接下去是關(guān)鍵,我們使用了一個(gè)小技巧來自定義格式化我們的輸出內(nèi)容,我們使用了Format-Table ProcessName, @{Expression={$_.Id}; Name="Id>2000"},如果不用自定義的方式我們將會(huì)這樣寫Format-Table ProcessName, Id,這樣你可以看出區(qū)別了吧。我把Id那一列寫成了@{Expression={$_.Id}; Name="Id>2000"}這一行其實(shí)是一個(gè)哈希表表達(dá)式,格式的語法基本是@{Expression={你想修改的屬性列};Name="屬性列更改后的名稱"}。
既然使用的是哈希表的方式來自定義格式化輸出,我們就可以直接以自定義哈希表的方式來靈活自定義格式化輸出。在PowerShell中定義哈希表的寫法是@{},所以我們可以換成如下的方式去賦值。(其實(shí)這種方式在PowerShell中也有個(gè)專門的技巧說法那就是Splatting,大家如果對(duì)Splatting感興趣可以查看我之前寫的使用Splatting方傳遞參數(shù)來更好的了解用法。)
# 將自定義的哈希表表達(dá)式賦值給變量CustomColumn $CustomColumn = @{Expression="Id"; Name="Id>2000"} # 直接調(diào)用變量即可 Get-Process | Where-Object{$_.Id -gt 200} | Format-Table ProcessName, $CustomColumn除了修改行標(biāo)題名稱以外,還可以對(duì)屬性值做很多自定義計(jì)算操作等等,比如我把Id屬性值以整數(shù)帶后兩位整零的格式(如:*.00)輸出。
Get-Process | Format-Table Name, @{Expression={$_.Id}; Name="Custom_Id"; FormatString="N2"}這里我增加了一個(gè)哈希鍵值FormatString="N2"?這個(gè)主要是告訴PowerShell這一列定義輸出的內(nèi)容都以整數(shù)格式輸出并且保留后兩位整零格式。你可以看到下面所有我們自定義的Custom_Id列都類似*.00格式輸出了。
當(dāng)然哈希表自定義格式化不僅僅只是在Format類型的命令格式化輸出中使用哦,也可以用于Select-Object、Sort-Object等命令里,它可靈活了,你用多了就會(huì)慢慢喜歡上這個(gè)技巧了。?
總結(jié)
以上是生活随笔為你收集整理的从零开始学PowerShell(5)自定义格式化信息的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: rabbitmq简单收发服务搭建
- 下一篇: pop3常用命令记录