濮阳杆衣贸易有限公司

主頁(yè) > 知識(shí)庫(kù) > Windows Powershell使用管道

Windows Powershell使用管道

熱門(mén)標(biāo)簽:騰訊地圖標(biāo)注中心怎么標(biāo)注 六寸地圖標(biāo)注點(diǎn)怎么刪除 萬(wàn)全縣地圖標(biāo)注app 印臺(tái)區(qū)呼叫中心外呼系統(tǒng) 莫拉克電梯系統(tǒng)外呼怎么設(shè)置 如何根據(jù)經(jīng)緯度百度地圖標(biāo)注 電話(huà)機(jī)器人公司招聘 新鄭電銷(xiāo)機(jī)器人一個(gè)月多少錢(qián) 地圖標(biāo)注的圖案

管道并不是什么新事物,以前的Cmd控制臺(tái)也有重定向的命令,例如Dir | More可以將結(jié)果分屏顯示。
傳統(tǒng)的Cmd管道是基于文本的,但是Powershell是基于對(duì)象。

PS> ls | Sort-Object -Descending Name | Select-Object Name,Length,LastWriteTime | ConvertTo-Html | Out-File ls.html

PS> Get-Content .ls.html

Name Length LastWriteTime
test.vbs 170 2011/11/28 16:42:03
test.txt 242 2011/11/23 17:37:37
test.ps1 140 2011/12/2 18:47:35
psdrive.html 2556 2011/11/30 16:04:00
Powershell_Cmdlets.html 735892 2011/11/24 17:44:37
ping.bat 63 2011/11/28 15:30:04
name.html 7420 2011/11/24 17:37:28
myscript 2011/11/29 18:21:28
ls.html 434 2011/12/14 11:22:30
LogoTestConfig.xml 186 2011/11/28 11:12:08
function.ps1 21466 2011/11/29 19:23:58
employee.xml 556 2011/11/25 11:20:33
d.txt 0 2011/11/23 17:25:23
c.txt 0 2011/11/23 17:25:23
b.txt 0 2011/11/23 17:25:23
alias.ps1 12060 2011/11/24 20:27:24
alias 12060 2011/11/24 20:26:36
ABC 2011/11/23 17:25:53
a.txt 26384 2011/11/24 20:04:31
a.html 67580 2011/11/24 18:30:13

首先列出當(dāng)前目錄下的目錄和文件,然后根據(jù)文件名降序排列,再投影文件名,文件大小,文件的修改時(shí)間,轉(zhuǎn)換成Html格式,輸出到當(dāng)前目錄的ls.html

面向?qū)ο蟮墓艿?/strong>

上面的例子屬于面向?qū)ο蟮墓艿?,每個(gè)命令的末尾可以使用新的命令對(duì)上個(gè)命令的結(jié)果做進(jìn)一步處理,除非管道是以輸出命令結(jié)束的。就像Sort-Object一樣,對(duì)文件的列表進(jìn)行排序,需要告訴它排序的關(guān)鍵字,按照升序還是降序。ls的返回值為一個(gè)數(shù)組,數(shù)組中的每一個(gè)元素都是一個(gè)對(duì)象,對(duì)象的每一個(gè)屬性都可以作為Sort-Object的排序關(guān)鍵字。但是排序時(shí)必須指定一個(gè)具體的關(guān)鍵字,因?yàn)镻owershell所傳遞的對(duì)象可能有很多屬性。不像普通的文本,對(duì)象的信息都是結(jié)構(gòu)化的,因此也使得Powershell的管道變得更加強(qiáng)大和方便。

轉(zhuǎn)換命令執(zhí)行的結(jié)果為文本

在執(zhí)行Powershell命令時(shí),解釋器會(huì)默認(rèn)在命令的結(jié)尾追加一個(gè)管道命令,Out-Default,這樣可以將原來(lái)的對(duì)象結(jié)果以文本的形式顯示在控制臺(tái)上,但是并沒(méi)有將結(jié)果進(jìn)行轉(zhuǎn)換,所以可以繼續(xù)使用其它管道對(duì)對(duì)象的結(jié)果進(jìn)行操作,但是一旦使用了諸如ConvertTo-Html這樣的命令后,就會(huì)將結(jié)果轉(zhuǎn)換成固定格式的純文本。

常用的對(duì)管道結(jié)果進(jìn)一步處理的命令有:

Compare-Object: 比較兩組對(duì)象。
ConvertTo-Html: 將 Microsoft .NET Framework 對(duì)象轉(zhuǎn)換為可在 Web 瀏覽器中顯示的 HTML。
Export-Clixml: 創(chuàng)建對(duì)象的基于 XML 的表示形式并將其存儲(chǔ)在文件中。
Export-Csv: 將 Microsoft .NET Framework 對(duì)象轉(zhuǎn)換為一系列以逗號(hào)分隔的、長(zhǎng)度可變的 (CSV) 字符串,并將這些字符串保存到
一個(gè) CSV 文件中。
ForEach-Object: 針對(duì)每一組輸入對(duì)象執(zhí)行操作。
Format-List: 將輸出的格式設(shè)置為屬性列表,其中每個(gè)屬性均各占一行顯示。
Format-Table: 將輸出的格式設(shè)置為表。
Format-Wide: 將對(duì)象的格式設(shè)置為只能顯示每個(gè)對(duì)象的一個(gè)屬性的寬表。
Get-Unique: 從排序列表返回唯一項(xiàng)目。
Group-Object: 指定的屬性包含相同值的組對(duì)象。
Import-Clixml: 導(dǎo)入 CLIXML 文件,并在 Windows PowerShell 中創(chuàng)建相應(yīng)的對(duì)象。
Measure-Object: 計(jì)算對(duì)象的數(shù)字屬性以及字符串對(duì)象(如文本文件)中的字符數(shù)、單詞數(shù)和行數(shù)。
more: 對(duì)結(jié)果分屏顯示。
Out-File: 將輸出發(fā)送到文件。
Out-Null: 刪除輸出,不將其發(fā)送到控制臺(tái)。
Out-Printer: 將輸出發(fā)送到打印機(jī)。
Out-String: 將對(duì)象作為一列字符串發(fā)送到主機(jī)。
Select-Object: 選擇一個(gè)對(duì)象或一組對(duì)象的指定屬性。它還可以從對(duì)象的數(shù)組中選擇唯一對(duì)象,也可以從對(duì)象數(shù)組的開(kāi)頭或末尾選
擇指定個(gè)數(shù)的對(duì)象。
Sort-Object: 按屬性值對(duì)象進(jìn)行排序。
Tee-Object: 將命令輸出保存在文件或變量中,并將其顯示在控制臺(tái)中。
Where-Object: 創(chuàng)建控制哪些對(duì)象沿著命令管道傳遞的篩選器。

管道的處理模式

當(dāng)我們把許多命名組合成一個(gè)管道時(shí),可能會(huì)感興趣每一個(gè)命令的執(zhí)行時(shí)是順序執(zhí)行還是同時(shí)執(zhí)行?通過(guò)管道處理結(jié)果實(shí)際上是實(shí)時(shí)的。這就是為什么存在兩個(gè)管道模式:
順序模式(較慢):在順序模式中管道中同一時(shí)間只執(zhí)行一條命令,只有當(dāng)前一條命令的所有執(zhí)行完畢,才會(huì)把所有結(jié)果交付給下一條 命令。這種模式速度慢并且耗內(nèi)存,因?yàn)楸仨毿枰芏啻畏峙淇臻g存儲(chǔ)中間結(jié)果。
流模式(較快):流模式會(huì)立即執(zhí)行所有命令,同一時(shí)間可能在執(zhí)行多條命令。前一條命令可能會(huì)產(chǎn)生多個(gè)結(jié)果,但是一旦產(chǎn)生其中一個(gè)結(jié)果,就會(huì)立即交付給下一條命令處理。這樣的流模式節(jié)省比較節(jié)省內(nèi)存,可能管道的某個(gè)任務(wù)還在執(zhí)行,但是已經(jīng)有部分結(jié)果輸出了。減少了中間結(jié)果的保存。

管道命令的阻塞

可以使用Sort-Object對(duì)管道的結(jié)果進(jìn)行排序,但是有時(shí)候排序可能導(dǎo)致整個(gè)操作系統(tǒng)阻塞,因?yàn)榕判蛎畹牡膱?zhí)行屬于順序模式,必須得上一條命令的結(jié)果全部完成,才能排序。
因此在使用這類(lèi)命令時(shí),要注意操作對(duì)象的大小,和它們需要的內(nèi)存。例如這條命令:
Dir C: -recurse | Sort-Object
-recurse 選項(xiàng)是遞歸查詢(xún)子目錄,可想而知系統(tǒng)盤(pán)的文件和目錄有多大。這條命令一旦運(yùn)行起來(lái),需要等很長(zhǎng)很長(zhǎng)的時(shí)間,甚至可能導(dǎo)致系統(tǒng)崩潰,得重啟電腦。你可以在執(zhí)行這條命令時(shí),打開(kāi)任務(wù)管理器查看Powershell進(jìn)程的內(nèi)存占用在以每秒種幾十兆的速率增加。
到底哪些命令可能系統(tǒng)阻塞,要視命令的實(shí)現(xiàn)方式以及處理的對(duì)象大小決定,例如Sort-object導(dǎo)致阻塞的原因肯定是由于技術(shù)實(shí)現(xiàn)上采用的是內(nèi)排序,沒(méi)有使用外排序。但是象Out-Host -paging 這樣的命令屬于流出來(lái)模式,就一般不會(huì)導(dǎo)致系統(tǒng)阻塞。

您可能感興趣的文章:
  • PowerShell實(shí)現(xiàn)按條件終止管道的方法
  • PowerShell中終止管道的方法
  • PowerShell入門(mén)教程之PowerShell管道介紹
  • Windows Powershell導(dǎo)出管道結(jié)果
  • Windows Powershell分析和比較管道結(jié)果
  • Windows Powershell過(guò)濾管道結(jié)果
  • Windows Powershell排序和分組管道結(jié)果
  • Windows Powershell 管道和重定向
  • PowerShell函數(shù)中接收管道參數(shù)實(shí)例
  • PowerShell中使用Filter來(lái)創(chuàng)建管道輸入函數(shù)
  • PowerShell管道入門(mén)必看篇(管道例子大全)

標(biāo)簽:襄陽(yáng) 湘潭 臨汾 天水 疫苗接種 南昌 汕頭 喀什

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Windows Powershell使用管道》,本文關(guān)鍵詞  Windows,Powershell,使用,管道,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Windows Powershell使用管道》相關(guān)的同類(lèi)信息!
  • 本頁(yè)收集關(guān)于Windows Powershell使用管道的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    吉林省| 隆子县| 左贡县| 丰镇市| 兰溪市| 东乌珠穆沁旗| 玉龙| 微博| 苗栗县| 嘉义县| 陆丰市| 温宿县| 敦化市| 太仓市| 巩留县| 于田县| 寻甸| 丰镇市| 正宁县| 大姚县| 揭东县| 盐亭县| 丁青县| 西充县| 宝兴县| 沙雅县| 宜君县| 天柱县| 孙吴县| 海门市| 章丘市| 新闻| 沙雅县| 临城县| 灵武市| 河南省| 法库县| 岳普湖县| 上栗县| 兴山县| 桐庐县|