PowerShell入門(mén)教程之PowerShell管道介紹
管道對(duì)于Shell來(lái)說(shuō)是個(gè)化腐朽為神奇的東西,它極大地提高了在命令行上編程的能力。深入理解并熟練使用管道是PowerShell高手之路的必經(jīng)階段。沒(méi)有管道,我們就不得不通過(guò)許多的變量來(lái)保存中間結(jié)果,雖然這是腳本和其他編譯型語(yǔ)言的慣用伎倆,但對(duì)于戰(zhàn)斗在命令行上的Shell而言,就是一件非常痛苦的事情。
管道模型
顧名思義,管道就是用管子將事物連接起來(lái)構(gòu)成通道。從表面上看,管道是一串由管道符號(hào)(|)連接起來(lái)的一些命令。從功能來(lái)看,管道就像流水線,將上一個(gè)處理的結(jié)果,傳送給下一個(gè)處理作為輸入。由管道連接起來(lái)的命令從左到右依次執(zhí)行,最后將結(jié)果輸出到控制臺(tái)。以前的管道流傳送的都是字符串,或者是可以格式化為字符串的表達(dá)式,PowerShell的管道流則可以傳輸對(duì)象。
PowerShell中的管道如何工作?
PowerShell的管道,能夠傳遞對(duì)象,這是一個(gè)巨大的進(jìn)步。到這個(gè)時(shí)候,管道才有了點(diǎn)函數(shù)調(diào)用的味道。調(diào)用方能夠傳遞復(fù)雜的對(duì)象,接收方則要進(jìn)行對(duì)象的類(lèi)型匹配,匹配不正確命令執(zhí)行就會(huì)出錯(cuò)。但這里也有例外。PowerShell管道不但可以按整個(gè)對(duì)象傳遞,還能夠按照屬性名傳遞,這一特性大大提高了管道的可用性,和處理能力。這使得我們能夠在類(lèi)型不匹配的情況下,也能夠使用管道,傳遞對(duì)象的部分屬性。
管道使用舉例
在PowerShell中有一些專(zhuān)門(mén)為管道設(shè)計(jì)的命令如get-member、sort、measure等,也有一些命令雖然不是為管道專(zhuān)門(mén)設(shè)計(jì),但卻在管道中大放光彩。下面舉例說(shuō)明幾個(gè)最常用的命令:
select
在管道中使用select命令,就像在Cmd中使用dir一樣常見(jiàn)。不用看select命令的詳細(xì)語(yǔ)法,你就能寫(xiě)出最常用的select使用方法。如下:
dir | select name,LastWriteTime
這個(gè)命令顯示當(dāng)前文件夾中的文件和子文件夾的名字和最后修改日期。
where
where命令使用來(lái)做篩選的,可以簡(jiǎn)寫(xiě)為?,使用示例如下:
dir | ? {$_.mode –like “d*”} | select name,LastWriteTime
這個(gè)命令能夠只顯示出當(dāng)前文件夾的子文件夾,而不顯示文件。
foreach
foreach可以對(duì)傳遞過(guò)來(lái)的每個(gè)對(duì)象進(jìn)行處理,可以簡(jiǎn)寫(xiě)為‘%'。使用示例如下:
dir | ? {$_.mode -notlike "d*"} | % {echo "The size of file '$($_.name)' is $_.Length"}
這個(gè)命令的結(jié)果是輸出類(lèi)似“The size of file 'myScript.ps1' is 1520”這樣的信息,每個(gè)文件一行。
結(jié)語(yǔ)
管道的好處很多,在這小小的篇幅中是說(shuō)不完的。上道以后,慢慢體會(huì),你會(huì)知道管道的妙處。
- Shell腳本中管道的幾種使用實(shí)例講解
- Shell腳步攻略之管道重定向基礎(chǔ)
- PowerShell管道入門(mén)必看篇(管道例子大全)
- linux shell 管道命令(pipe)使用及與shell重定向區(qū)別
- PowerShell實(shí)現(xiàn)按條件終止管道的方法
- PowerShell中終止管道的方法
- Windows Powershell導(dǎo)出管道結(jié)果
- Windows Powershell過(guò)濾管道結(jié)果
- shell腳本一鍵同時(shí)推送代碼至github和gitee的解決辦法
- 如何利用 tee 命令調(diào)試shell腳本中的管道
相關(guān)文章
探索PowerShell(一) 初識(shí) PowerShell
PowerShell是一個(gè)由微軟的提供的全新shell程序,使用了全新的命令提示和腳本環(huán)境2012-12-12Windows Powershell擴(kuò)展類(lèi)型系統(tǒng)
本文主要詳細(xì)介紹了集中將對(duì)象轉(zhuǎn)換成文本的方法,并附上示例說(shuō)明,非常的實(shí)用,有需要的朋友可以參考下2014-09-09Powershell小技巧之創(chuàng)建短網(wǎng)址
短網(wǎng)址服務(wù),可能很多朋友都已經(jīng)不再陌生,特別是在微博應(yīng)用中十分普遍,比如,當(dāng)我們?cè)隍v訊、新浪微博發(fā)微博時(shí)有時(shí)發(fā)很長(zhǎng)的網(wǎng)址連接,但由于微博只限制140個(gè)字,所以微博就自動(dòng)把您發(fā)的長(zhǎng)網(wǎng)址給轉(zhuǎn)換成短網(wǎng)址了。今天我們來(lái)探討下,如何用powershell來(lái)便捷的使用短網(wǎng)址2014-10-10PowerShell小技巧之讀取Windows產(chǎn)品密鑰
這篇文章主要給大家分享一段使用PowerShell讀取Windows產(chǎn)品密鑰的小技巧,非常的簡(jiǎn)單實(shí)用,有需要的朋友可以參考下。2014-10-10PowerShell 自動(dòng)備份oracle并上傳到ftp
我這里有這樣一個(gè)需求:有一個(gè)數(shù)據(jù)庫(kù),每天使用SQL Server Agent自動(dòng)生成備份文件。然后,這個(gè)數(shù)據(jù)庫(kù)非常重要,需要把每天的備份上傳一個(gè)遠(yuǎn)程的FTP服務(wù)器上去。下面我們來(lái)看看如何使用Powershell來(lái)實(shí)現(xiàn)吧2015-08-08自動(dòng)設(shè)置安卓手機(jī)wifi代理的PowerShell腳本
這篇文章主要介紹了自動(dòng)設(shè)置安卓手機(jī)wifi代理的PowerShell腳本,幫助大家進(jìn)行抓包測(cè)試,感興趣的朋友可以了解下2020-10-10詳談Ubuntu PowerShell(小白入門(mén)必看教程)
下面小編就為大家?guī)?lái)一篇詳談Ubuntu PowerShell(小白入門(mén)必看教程)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-06-06PowerShell中把IP轉(zhuǎn)換為長(zhǎng)整形數(shù)字的方法
這篇文章主要介紹了PowerShell中把IP轉(zhuǎn)換為長(zhǎng)整形數(shù)字的方法,本文通過(guò)自定義兩個(gè)過(guò)濾器實(shí)現(xiàn),需要的朋友可以參考下2014-08-08PowerShell查看Windows功能選項(xiàng)的方法
這篇文章主要介紹了PowerShell查看Windows功能選項(xiàng),也就就是在PowerShell中獲取Windows功能里的選項(xiàng)設(shè)置,需要的朋友可以參考下2014-11-11