主頁 > 知識庫 > PowerShell管道入門必看篇(管道例子大全)

PowerShell管道入門必看篇(管道例子大全)

熱門標(biāo)簽:金融電銷公司怎么辦理外呼系統(tǒng) 什么渠道可以找外呼系統(tǒng)客戶 使用電話機(jī)器人電銷是否違法 信陽話務(wù)外呼系統(tǒng)怎么收費(fèi) 真人和電話機(jī)器人對話 安徽400電話辦理 雷霆電話機(jī)器人電話 湖州電銷防封卡 電話智能外呼系統(tǒng)誠信合作

PowerShell的一個重中之重的功能就是管道(pipeline),本文從淺入深,一步一步詳解管道的使用方法和例子,來看看有沒有你所不知道的吧,如果全知道,恭喜你已經(jīng)很厲害啦——適用于所有PowerShell應(yīng)用小白與技術(shù)老鳥。另外歡迎各位技術(shù)大牛來補(bǔ)充討論學(xué)習(xí)~

1. 管道(pipeline)是什么

在Shell中一個重要的基本概念就是管道(pipeline),即在一組命令中,輸出的命令結(jié)果成為下一個命令的輸入?yún)?shù)。管道的概念與真實生活中的生產(chǎn)線比較相似:在不同的生產(chǎn)環(huán)節(jié)進(jìn)行連續(xù)的再加工,如下圖例子:

“Get-ChildItem”意思是獲取當(dāng)前路徑的所有項目,“|Where-Object {$_.Length -gt 200}”意思是查看上一步結(jié)果,取所有長度大于200的項目,“|Sort-Object -Descending Name”意思是查看上一步結(jié)果,按照Name進(jìn)行倒敘排列。

在PowerShell中,使用管道符號(|)來劃分管道中的每個命令,上述例子說明了管道的強(qiáng)大功能,同時PowerShell在管道中傳遞的是高保真對象,不僅僅是文本描述。

下面主要給大家介紹一下常用的管道處理命令。

2. Where-Object:過濾列表項或命令輸出結(jié)果

可以使用Where-Object(別名是where和?)從列表或者命令輸出結(jié)果中過濾選擇你需要的項目。

對于輸入的每一項,Where-Object都會根據(jù){}中定義的腳本塊對輸入進(jìn)行計算,如果返回True,則輸出,否則不輸出。如下例子:

{}表示一個腳本塊,可以輸入一系列PowerShell命令,其中$_代表當(dāng)前輸入對象,在這個例子中,$_就代表一個文件項目。-gt是比較操作符,意思是大于,關(guān)于比較操作符的介紹如下:

PowerShell中比較操作符是用于對表達(dá)式進(jìn)行比較的。默認(rèn)情況比較操作符不區(qū)分大小寫,如果想要區(qū)分,需要使用-C前綴,不需要區(qū)分的,使用-I前綴。

所有可用的比較操作符如下表格:

操作符

意義

返回True的例子

-eq

相等符

10 -eq 10

-ne

不相等符

10 -ne 9

-ge

大于等于操作符

10 -ge 9

-gt

大于操作符

10 -gt 9

-lt

小于操作符

10 -lt 11

-le

小于等于操作符

10 -le 11

-like

相似操作符

"Bob" -like "*ob"

-notlike

非相似操作符

"Bob" -notlike "1*ob"

-match

匹配操作符

"Bob" -match "B*ob"

-notmatch

非匹配操作符

"Bob" -notmatch "123*"

-contains

包含操作符

"Bob","Bob1" -contains "Bob"

-notcontains

非包含操作符

"Bob","Bob1" -notcontains "ob"

-is

類型操作符

"Bob" -is "System.String"

-isnot

非類型操作符

"Bob" -isnot "System.Int32"

3. ForEach-Object:處理列表或者命令輸出的每一個項目

使用ForEach-Object命令(別名是foreach和%)來處理列表中的每一項。

使用例子如下:

例子中1..10的意思是簡單聲明了一個1~10的一組數(shù)字。其中處理列表中每一項還可以用for、foreach、do和while等,以后會更詳細(xì)的介紹。

4. Select-Object:選擇列表項或輸出結(jié)果只輸出要的結(jié)果

使用Select-Object(別名是select)對象可以選擇一個對象或者一組對象的指定屬性。還可以從對象的數(shù)組中選擇唯一的對象,也可以從對象數(shù)組的開頭或末尾選擇指定個數(shù)的對象。

如果使用 Select-Object 來選擇指定屬性,則它會從輸入對象中復(fù)制這些屬性的值,并創(chuàng)建具有指定的屬性和復(fù)制的值的新對象。使用 Property 參數(shù)指定您要選擇的屬性。或者,使用 First、Last、Unique、Skip 和 Index 參數(shù)從輸入對象數(shù)組中選擇特定對象。

使用例子如下:

a) 選擇當(dāng)前路徑下所有項目的Name和Length屬性:

b) 選擇當(dāng)前路徑下前三個項目:

c) 選擇當(dāng)前路徑下所有項目的Name和自定義屬性,名字叫做Last Modified Day,結(jié)果是通過LastWriteTime屬性算出來的:

d) 選擇當(dāng)前路徑下第一個和第六個項目:

e) 選擇當(dāng)前路徑下除第五個項目外的所有項目:

f) 顯示數(shù)組中的唯一數(shù)字:

5. Sort-Object:對列表項或者輸出結(jié)果進(jìn)行排序

使用Sort-Object(別名是sort)可以按照特定屬性值對對象進(jìn)行排序。您可以指定一個屬性或多個屬性(用于多鍵排序),也可以選擇區(qū)分大小寫或不區(qū)分大小寫的排序。您還可以指示 Sort-Object 只顯示對于特定屬性具有唯一值的對象。

如果某個對象不具有所指定的屬性之一,則 cmdlet 會將該對象的屬性值解釋為 NULL,并將其放置在排序順序的末尾。

使用例子如下:

a) 對當(dāng)前路徑下所有的項目按照長度從小到大排序:

b) 對整個數(shù)組的唯一性數(shù)字按照降序排列:

6. Tee-Object:保存并輸出列表項或者輸出結(jié)果

使用Tee-Object(別名是tee)命令可以將命令輸出結(jié)果保存在文件或者變量中,同時將其顯示在控制臺中。

a) 將當(dāng)前路徑下所有大小大于900的項目都保存到文件中并顯示在控制臺中:

b) 將當(dāng)前路徑下所有大小大于900的項目都保存在變量中并顯示在控制臺中:

7. Group-Object:對列表項或者輸出結(jié)果進(jìn)行分組

使用Group-Object(group)對列表項或者輸出結(jié)果進(jìn)行分組,指定的屬性包含相同值的組對象。Group-Object 返回一個表,其中每個屬性值對應(yīng)一行,同時一個列顯示具有該值的項目數(shù)。

還可以讓返回的對象是個HashTable——key-value的鍵值對數(shù)組,指定-AsHashTable參數(shù):

8. Measure-Object:對列表項或輸出結(jié)果進(jìn)行計算

使用Measure-Object(measure)計算對象的數(shù)字屬性以及字符串對象(如文本文件)中的字符數(shù)、單詞數(shù)和行數(shù)。它計算某些類型對象的屬性值。Measure-Object 執(zhí)行三種類型測量,具體取決于命令中的參數(shù)。可以對對象計數(shù)并計算數(shù)字值的最小值、最大值、總和及平均值。對于文本對象,它可以計數(shù)并計算行數(shù)、單詞數(shù)和字符數(shù)。

a) 計算當(dāng)前路徑下項目的總數(shù):

b) 計算當(dāng)前路徑下項目的長度的最小值、最大值以及平均值:

c) 計算當(dāng)前文件中字符、行、單詞的總數(shù):

9. Compare-Object:對兩組對象進(jìn)行比較

用Compare-Object(別名是compare和diff)可以將兩組對象進(jìn)行比較,一組對象為Reference組,而另一組為Difference組。比較的結(jié)果將指示屬性值是只出現(xiàn)在 Reference 組中的對象中(由 = 符號指示),或是只出現(xiàn)在 Difference 組中的對象中(由 => 符號指示),抑或(在指定了 IncludeEqual 參數(shù)的情況下)同時出現(xiàn)在這兩個對象中(由 == 符號指示)。

10. ConvertTo-Html:將對象轉(zhuǎn)換為HTML

用ConvertTo-Html可以將Microsoft.Net Framework對象轉(zhuǎn)換為可在Web瀏覽器中顯示的HTML:

11. Export-Csv:將對象轉(zhuǎn)換為CSV字符串存儲在文件中

用Export-Csv(別名是epcsv)將 Microsoft .NET Framework 對象轉(zhuǎn)換為一系列以逗號分隔的、長度可變的 (CSV) 字符串,并將這些字符串保存到一個 CSV 文件中。

12. Format-List、Format-Table、Format-Wide:將輸出結(jié)果格式化

Format-List(別名是fl)可以將輸出的格式設(shè)置為屬性列表,其中每個屬性均各占一行顯示:

Format-Table(別名是ft)可以將輸出的格式設(shè)置為表:

Format-Wide(別名是fw)可以將對象的格式設(shè)置為只能顯示每個對象的一個屬性的寬表:

13. Get-Unique:獲取輸出結(jié)果的唯一值

使用Get-Unique(別名是gu)可以從排序列表中返回唯一項目。

14. Out-File:將輸出結(jié)果輸出到文件

可以使用Out-File將輸出發(fā)送到文件:

15. Get-Member:如何獲取管道操作對象的屬性

管道操作的時候經(jīng)常會用到管道輸入對象的屬性,使用Get-Member(gm)來獲取對象的屬性和方法。

a) 獲取對象的公有屬性:

b) 獲取對象的公有方法:

當(dāng)?shù)弥獙ο蟮墓袑傩院头椒ǖ拿趾?,就可以在管道操作中使用了?/p>

16. 如何判斷一個命令是否支持管道輸入

學(xué)會使用管道后,得學(xué)會判斷一個命令是否支持管道輸入。使用Get-Help命令獲取一個命令的使用方法,對于參數(shù),可以看到是否支持管道輸入,或者通過MSDN去查詢命令幫助。

比如PowerShell Core里面的Where-Object的MSDN的幫助站點(diǎn)是:

https://msdn.microsoft.com/powershell/reference/5.1/microsoft.powershell.core/Where-Object。

對于里面的-InputObject則是支持管道輸入,-Is則不支持管道輸入:

比如PowerShell Core里面的Move-Item的MSDN的幫助站點(diǎn)是:

https://msdn.microsoft.com/powershell/reference/5.1/microsoft.powershell.management/Move-Item。

對于里面的-Path則是支持管道輸入,-UseTransaction則不支持管道輸入:

對于沒有任何一個參數(shù)支持管道輸入的命令則是不支持管道輸入的命令。

17. 自動化處理數(shù)據(jù)密集型任務(wù)

如果要對大量的數(shù)據(jù)進(jìn)行處理簡單的任務(wù),可以把數(shù)據(jù)保存在一個CSV文件里面,使用Import-Csv來導(dǎo)入數(shù)據(jù),導(dǎo)入后為每一行自動創(chuàng)建對象,并將列的名字作為對象的屬性,之后用foreach對數(shù)據(jù)的每一項進(jìn)行操作。

如果你命名的CSV文件中的列的名字和管道使用的參數(shù)名一致,PowerShell可以實現(xiàn)這種部分或全部參數(shù)的映射。

PowerShell的一個主要的優(yōu)點(diǎn)就是具有自動化重復(fù)性任務(wù)的能力。有時候,這些重復(fù)性的任務(wù)是動作密集的(如系統(tǒng)維護(hù),操作注冊表,或者文件清理),并且包括復(fù)雜的有順序的互相調(diào)用的命令。在這種情況下,可以通過編寫腳本將這些操作組合到一起,這樣可以節(jié)省時間,降低錯誤的發(fā)生。

上述列舉的只是常用的命令和使用方法,PowerShell強(qiáng)大的命令集完全不止這些。

以上這篇PowerShell管道入門必看篇(管道例子大全)就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

您可能感興趣的文章:
  • Shell腳本中管道的幾種使用實例講解
  • Shell腳步攻略之管道重定向基礎(chǔ)
  • linux shell 管道命令(pipe)使用及與shell重定向區(qū)別
  • PowerShell實現(xiàn)按條件終止管道的方法
  • PowerShell中終止管道的方法
  • PowerShell入門教程之PowerShell管道介紹
  • Windows Powershell導(dǎo)出管道結(jié)果
  • Windows Powershell過濾管道結(jié)果
  • shell腳本一鍵同時推送代碼至github和gitee的解決辦法
  • 如何利用 tee 命令調(diào)試shell腳本中的管道

標(biāo)簽:運(yùn)城 六盤水 濟(jì)南 德州 山南 鶴崗 湛江 岳陽

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《PowerShell管道入門必看篇(管道例子大全)》,本文關(guān)鍵詞  PowerShell,管道,入門,必看篇,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《PowerShell管道入門必看篇(管道例子大全)》相關(guān)的同類信息!
  • 本頁收集關(guān)于PowerShell管道入門必看篇(管道例子大全)的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章