主頁(yè) > 知識(shí)庫(kù) > Windows Powershell過(guò)濾管道結(jié)果

Windows Powershell過(guò)濾管道結(jié)果

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

如果要過(guò)濾對(duì)象可以使用Where-Object;如果要過(guò)濾對(duì)象的屬性,可以使用Select-Object;如果要自定義個(gè)性化的過(guò)濾效果可以使用ForEach-Object。最后如果想過(guò)濾重復(fù)的結(jié)果,可是使用Get-Uinque。

篩選管道結(jié)果中的對(duì)象

如果你只對(duì)管道結(jié)果的特定對(duì)象感興趣,可是使用Where-Object對(duì)每個(gè)結(jié)果進(jìn)行嚴(yán)格篩選,一旦滿(mǎn)足你的標(biāo)準(zhǔn)才會(huì)保留,不滿(mǎn)足標(biāo)準(zhǔn)的就會(huì)自動(dòng)丟棄。例如你通過(guò)Get-service查看運(yùn)行在機(jī)器上的當(dāng)前服務(wù),但是可能只關(guān)心哪些正在運(yùn)行的服務(wù),這時(shí)就可是通過(guò)每個(gè)服務(wù)的屬性Status進(jìn)行過(guò)濾。但是前提條件是你得事先知道待處理的對(duì)象擁有哪些屬性。你可以通過(guò)Format-List * ,也可以通過(guò)Get-memeber。

PS C:Powershell> Get-service | Select-Object -First 1 | Format-List *

Name        : AdobeARMservice
RequiredServices  : {}
CanPauseAndContinue : False
CanShutdown     : False
CanStop       : True
DisplayName     : Adobe Acrobat Update Service
DependentServices  : {}
MachineName     : .
ServiceName     : AdobeARMservice
ServicesDependedOn : {}
ServiceHandle    :
Status       : Running
ServiceType     : Win32OwnProcess
Site        :
Container      :

PS C:Powershell> Get-service | Select-Object -First 1 | Get-Member -MemberType
Property

  TypeName: System.ServiceProcess.ServiceController

Name        MemberType Definition
----        ---------- ----------
CanPauseAndContinue Property  System.Boolean CanPauseAndContinue {get;}
CanShutdown        Property  System.Boolean CanShutdown {get;}
CanStop            Property  System.Boolean CanStop {get;}
Container           Property  System.ComponentModel.IContainer Container {g...
DependentServices    Property  System.ServiceProcess.ServiceController[] Dep...
DisplayName        Property  System.String DisplayName {get;set;}
MachineName       Property  System.String MachineName {get;set;}
ServiceHandle        Property  System.Runtime.InteropServices.SafeHandle Ser...
ServiceName         Property  System.String ServiceName {get;set;}
ServicesDependedOn  Property  System.ServiceProcess.ServiceController[] Ser...
ServiceType          Property  System.ServiceProcess.ServiceType ServiceType...
Site                Property  System.ComponentModel.ISite Site {get;set;}
Status              Property  System.ServiceProcess.ServiceControllerStatus...

知道了對(duì)象有哪些屬性,要完成上面提到的需求就很容易了。

PS C:Powershell> get-service | Where-Object {$_.Status -eq "Running"}

Status  Name        DisplayName
------  ----        -----------
Running AdobeARMservice   Adobe Acrobat Update Service
Running AppHostSvc       Application Host Helper Service
Running AppIDSvc      Application Identity
Running Appinfo       Application Information
Running AudioEndpointBu...  Windows Audio Endpoint Builder
Running Audiosrv      Windows Audio
Running BDESVC       BitLocker Drive Encryption Service
Running BFE         Base Filtering Engine
Running BITS        Background Intelligent Transfer Ser...
Running CcmExec       SMS Agent Host

這里稍微解釋一下,Where-Object的參數(shù)的是一個(gè)布爾表達(dá)式,$_代表過(guò)濾過(guò)程中經(jīng)過(guò)管道的當(dāng)前結(jié)果。另外Where-Object還有一個(gè)別名 “?” 更形象。

選擇對(duì)象的屬性

包含在每一個(gè)對(duì)象中的屬性可能有很多,但是并不是所有的屬性你都感興趣,這時(shí)可以使用Select-Object 限制對(duì)象的屬性。接下來(lái)的例子演示如果獲取機(jī)器上匿名帳號(hào)的完整信息。

PS C:Usersv-bali.FAREAST> Get-WmiObject Win32_UserAccount -filter "LocalAccount=True AND Name='guest'"

AccountType : 512
Caption     : myhomeguest
Domain     : myhome
SID        : S-1-5-21-3064017030-3269374297-2491181182-501
FullName    :
Name    : guest

如果你只對(duì)用戶(hù)名、描述,啟用感興趣。

PS C:Powershell> Get-WmiObject Win32_UserAccount -filter "LocalAccount=True AND
 Name='guest'" | Select-Object Name,Description,Disabled

Name            Description                 Disabled
----              -----------                 --------
guest           Built-in account for gu...           True

Select-Object也支持通配符。

Dir | Select-Object * -exclude *A*
限制對(duì)象的數(shù)量

列出最后修改的5個(gè)文件

PS C:Powershell> Dir | Select-Object -ExcludeProperty "*N*" -First 5

  目錄: C:Powershell

Mode        LastWriteTime   Length Name
----        -------------   ------ ----
-a---    2011/11/24   18:30   67580 a.html
-a---    2011/11/24   20:04   26384 a.txt
-a---    2011/11/24   20:26   12060 alias
-a---    2011/11/25   11:20    556 employee.xml
-a---    2011/11/29   19:23   21466 function.ps1

列出占用CPU最大的5個(gè)進(jìn)程

PS C:Powershell> get-process | sort -Descending cpu | select -First 5

Handles NPM(K) PM(K) WS(K) VM(M) CPU(s)  Id ProcessName
------- ------ ----- ----- ----- ------  -- -----------
  1336   98 844304 809388 1081 164.69 3060 iexplore
  224   10 74676 62468  188 81.10 4460 AcroRd32
  130   9 28264 39092  167 70.57 3436 dwm
  169   8  7576 29568  134 65.22 3364 notepad
  989   34 72484 35996  393 62.67 4724 BingDict

逐個(gè)處理所有管道結(jié)果

如果想對(duì)管道結(jié)果進(jìn)行逐個(gè)個(gè)性化處理可是使用ForEach-Object

ls | ForEach-Object {"文件名: 文件大小(M): " -f $_.Name,$_.Length/1M}
PS C:Powershell> ls | ForEach-Object {"文件名:{0} 文件大小{1}KB: " -f $_.Name,
($_.length/1kb).tostring()}
文件名:a.html 文件大小65.99609375KB:
文件名:a.txt 文件大小25.765625KB:
文件名:alias 文件大小11.77734375KB:
文件名:employee.xml 文件大小0.54296875KB:
文件名:function.ps1 文件大小20.962890625KB:
文件名:LogoTestConfig.xml 文件大小0.181640625KB:
文件名:ls.html 文件大小3.37890625KB:
刪除重復(fù)對(duì)象

Get-Unique可以從已排序的對(duì)象列表中刪除重復(fù)對(duì)象。Get-Unique會(huì)逐個(gè)遍歷對(duì)象,每次遍歷時(shí)都會(huì)與前一個(gè)對(duì)象進(jìn)行比較,如果和前一個(gè)對(duì)象相等就會(huì)拋棄當(dāng)前對(duì)象,否則就保留。所以如果對(duì)象列表中沒(méi)有排序,Get-Unique不能完全發(fā)揮作用,只能保證相鄰對(duì)象不重復(fù)。

PS C:Powershell> 1,2,1,2 | Get-Unique
1
2
1
2
PS C:Powershell> 1,2,1,2 | Sort-Object |Get-Unique
1
2
PS C:Powershell> ls | foreach{$_.extension} | Sort-Object |Get-Unique

.bat
.html
.ps1
.txt
.vbs
.xml

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

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

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Windows Powershell過(guò)濾管道結(jié)果》,本文關(guān)鍵詞  Windows,Powershell,過(guò)濾,管道,;如發(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ò)濾管道結(jié)果》相關(guān)的同類(lèi)信息!
  • 本頁(yè)收集關(guān)于Windows Powershell過(guò)濾管道結(jié)果的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章