Windows Powershell Where-Object 条件过滤

过滤管道结果

使用Get-Process返回所有的当前进程 ,但是你可能并不对所有的进程感兴趣,然后通过每个Process对象的属性进行过滤。首先得知道每个对象支持那些属性。

代码如下:

PS C:Powershell> Get-Process | select -First 1 | fl *

__NounName                 : Process
Name                       : AcroRd32
Handles                    : 287
VM                         : 234819584
WS                         : 32616448
PM                         : 63488000
NPM                        : 14584
Path                       : C:Program FilesAdobeReader 10.0ReaderAcroRd32
                             .exe
Company                    : Adobe Systems Incorporated
CPU                        : 96.5334188
FileVersion                : 10.1.2.45
ProductVersion             : 10.1.2.45
Description                : Adobe Reader
Product                    : Adobe Reader
Id                         : 4820
PriorityClass              : Normal
HandleCount                : 287
WorkingSet                 : 32616448
PagedMemorySize            : 63488000
PrivateMemorySize          : 63488000
VirtualMemorySize          : 234819584
TotalProcessorTime         : 00:01:36.5334188
BasePriority               : 8
ExitCode                   :
HasExited                  : False
ExitTime                   :
Handle                     : 3568
MachineName                : .
MainWindowHandle           : 198686
MainWindowTitle            : Mastering PowerShell - Adobe Reader
MainModule                 : System.Diagnostics.ProcessModule (AcroRd32.exe)
MaxWorkingSet              : 1413120
MinWorkingSet              : 204800
Modules                    : {System.Diagnostics.ProcessModule (AcroRd32.exe),
                             System.Diagnostics.ProcessModule (ntdll.dll), Syst
                             em.Diagnostics.ProcessModule (kernel32.dll), Syste
                             m.Diagnostics.ProcessModule (KERNELBASE.dll)...}
NonpagedSystemMemorySize   : 14584
NonpagedSystemMemorySize64 : 14584
PagedMemorySize64          : 63488000
PagedSystemMemorySize      : 302460
PagedSystemMemorySize64    : 302460
PeakPagedMemorySize        : 75399168
PeakPagedMemorySize64      : 75399168
PeakWorkingSet             : 87871488
PeakWorkingSet64           : 87871488
PeakVirtualMemorySize      : 257703936
PeakVirtualMemorySize64    : 257703936
PriorityBoostEnabled       : True
PrivateMemorySize64        : 63488000
PrivilegedProcessorTime    : 00:00:27.7057776
ProcessName                : AcroRd32
ProcessorAffinity          : 3
Responding                 : True
SessionId                  : 1
StartInfo                  : System.Diagnostics.ProcessStartInfo
StartTime                  : 2012/1/13 10:25:34
SynchronizingObject        :
Threads                    : {4376, 6636, 8096, 5136...}
UserProcessorTime          : 00:01:08.8276412
VirtualMemorySize64        : 234819584
EnableRaisingEvents        : False
StandardInput              :
StandardOutput             :
StandardError              :
WorkingSet64               : 32616448
Site                       :
Container                  :

根据进程名过滤所有记事本进程。

代码如下:

PS C:Powershell> Get-Process | Where-Object {$_.Name -eq "notepad"}

Handles  NPM(K)    PM(K)      WS(K) VM(M)   CPU(s)     Id ProcessName
-------  ------    -----      ----- -----   ------     -- -----------
    158       7     8800      37264   114    18.41   6204 notepad

根据进程名过滤所有IE进程。

代码如下:

PS C:Powershell> Get-Process | Where-Object {$_.Name -eq "iexplore"}

Handles  NPM(K)    PM(K)      WS(K) VM(M)   CPU(s)     Id ProcessName
-------  ------    -----      ----- -----   ------     -- -----------
    710      23    12832      18160   175    10.51   4204 iexplore
    971      39    81000     107580   399    22.20   6764 iexplore
    336      13    28516      20096   187     0.34   6792 iexplore
    929      35    51020      46568   314    10.42   7192 iexplore
    835      26    49200      32360   308     7.82   7952 iexplore

根据company过滤所有产品发布者以”Microsoft”打头的进程:

代码如下:

PS C:Powershell> Get-Process | Where-Object {$_.company -like '*Microsoft*' }|
select Name,Description,Company
msseces                    Microsoft Security Clie... Microsoft Corporation
notepad                    记事本                     Microsoft Corporation
ONENOTEM                   Microsoft OneNote Quick... Microsoft Corporation
OUTLOOK                    Microsoft Outlook          Microsoft Corporation
powershell                 Windows PowerShell         Microsoft Corporation
prevhost                   Preview Handler Surroga... Microsoft Corporation
RDCMan                     RDCMan                     Microsoft Corporation
SearchProtocolHost         Microsoft Windows Searc... Microsoft Corporation
taskhost                   Windows 任务的主机进程     Microsoft Corporation

使用别名

因为Where-Object的使用概率比较高,所以有一个很形象的别名 ? 可以使用:

代码如下:

PS C:Powershell> Get-Service | ? {$_.Name -like "B*"}

Status   Name               DisplayName
------   ----               -----------
Running  BDESVC             BitLocker Drive Encryption Service
Running  BFE                Base Filtering Engine
Running  BITS               Background Intelligent Transfer Ser...
Stopped  Browser            Computer Browser
Stopped  bthserv            Bluetooth Support Service

(0)

相关推荐

  • Windows Powershell条件表达式之条件操作符

    Powershell 中的比较运算符 -eq :等于 -ne :不等于 -gt :大于 -ge :大于等于 -lt :小于 -le :小于等于 -contains :包含 -notcontains :不包含 进行比较 可以将比较表达式直接输入进Powershell控制台,然后回车,会自动比较并把比较结果返回. 复制代码 代码如下: PS C:Powershell> (3,4,5 ) -contains 2 False PS C:Powershell> (3,4,5 ) -contains 5

  • Windows Powershell IF-ELSEIF-ELSE 语句

    Where-Object 进行条件判断很方便,如果在判断后执行很多代码可以使用IF-ELSEIF-ELSE语句.语句模板: 复制代码 代码如下: If(条件满足){ 如果条件满足就执行代码 } Else { 如果条件不满足 } 条件判断必须放在圆括号中,执行的代码必须紧跟在后面的花括号中. 复制代码 代码如下: PS C:Powershell> $n=8 PS C:Powershell> if($n -gt 15) {"$n  大于 15 " } PS C:Powershe

  • Windows Powershell Switch 语句

    下面的例子将If-ElseIF-Else转换成Switch语句 复制代码 代码如下: # 使用 IF-ElseIF-Else If( $value -eq 1 ) {     "Beijing" } Elseif( $value -eq 2) {     "Shanghai" } Elseif( $value -eq 3 ) {     "Tianjin" } Else {     "Chongqing" }   # 使用 S

  • Windows Powershell Where-Object 条件过滤

    过滤管道结果 使用Get-Process返回所有的当前进程 ,但是你可能并不对所有的进程感兴趣,然后通过每个Process对象的属性进行过滤.首先得知道每个对象支持那些属性. 复制代码 代码如下: PS C:Powershell> Get-Process | select -First 1 | fl * __NounName                 : Process Name                       : AcroRd32 Handles               

  • Windows PowerShell是啥?看完本文你就懂它了

    引子 一直很羡慕Linux的命令提示符(当然他们叫Shell).正则表达式,管道,各种神奇的命令,组合起来就能高效完成很多复杂的任务.效率实在是高.流了n年的哈喇子以后,终于有幸用上了Win7,邂逅了cmd的升级版:Windows PowerShell.从此暗爽无比,原来Windows下也有这样的利器呀~ 看看下面的Windows脚本,不到15行有效代码.在Win7下只要右击脚本文件,选择Run with PowerShell,就会自动找到最占内存的10个进程,然后将它们占用的内存画成一个三维饼

  • Windows Powershell 自动化变量

    Powershell 自动化变量 是那些一旦打开Powershell就会自动加载的变量. 这些变量一般存放的内容包括 用户信息:例如用户的根目录$home 配置信息:例如powershell控制台的大小,颜色,背景等. 运行时信息:例如一个函数由谁调用,一个脚本运行的目录等. PS> $HOME C:\Users\test PS> $currentProcessID=$pid PS> $currentProcessID 5356 PS> Get-Process -Id $pid H

  • Windows Powershell 别名

    简短描述 在Windows PowerShell中, 别名就是cmdlets或其他命令的替代名称. 详细描述 别名就是cmdlet或者命令(例如: 函数, 脚本, 文件, 可执行文件. )的替代名称或者说是个昵称. 在使用命令的地方, 你都可以使用别名. cmdlet 的名称由一个动词和一个名词组成,其功能对用户来讲一目了然.但是对于一个经常使用powershell命令的人每天敲那么多命令也很麻烦啊.能不能把命令缩短一点呢?于是"别名"就应运而生了.Powershell内部也实现了很多

  • django model 条件过滤 queryset.filter(**condtions)用法详解

    1.下述代码查询model对应数据库中日期等于2018-05-22的数据: queryset = model.objects.all() condtions: {'date': '2018-05-22'} query_res = queryset.filter(**condtions) 2.下述代码查询model对应数据库中日期小于2018-05-22的数据: queryset = model.objects.all() condtions: {'date__lt': '2018-05-22'}

  • Windows Powershell 介绍和安装

    Powershell 是运行在windows机器上实现系统和应用程序管理自动化的命令行脚本环境.你可以把它看成是命令行提示符cmd.exe的扩充,不对,应当是颠覆. powershell需要.NET环境的支持,同时支持.NET对象.微软之所以将Powershell 定位为Power,并不是夸大其词,因为它完全支持对象.其可读性,易用性,可以位居当前所有shell之首. 当前powershell有四版本,分别为1.0,2.0,3.0 ,4.0 如果您的系统是window7或者Windows Ser

  • Windows Powershell使用管道

    管道并不是什么新事物,以前的Cmd控制台也有重定向的命令,例如Dir | More可以将结果分屏显示. 传统的Cmd管道是基于文本的,但是Powershell是基于对象. PS> ls | Sort-Object -Descending Name | Select-Object Name,Length,LastWriteTime | ConvertTo-Html | Out-File ls.html PS> Get-Content .ls.html Name Length LastWriteT

  • Windows Powershell属性:描述对象是什么

    属性可以描述一个对象,对象的属性可以被Powershell自动转换成文本,并且输出到控制台.因此可以通过这种方法查看任何对象,例如$host: 复制代码 代码如下: PS C:Powershell> $host Name              : ConsoleHost Version           : 2.0 InstanceId            : 7fefa1fa-fb2e-47c7-a867-c13b123da5c2 UI                : System.

  • Windows PowerShell 微软官方解释

    通过提供一百多种系统管理实用工具.一致的语法.及对普通管理数据更好地导航(如登记或 Windows Management Instrumentation (WMI)),Windows PowerShell 使 Windows 管理员提高了生产力.Windows PowerShell 还包括全面启动 Windows 系统自动化管理任务的脚本编写语言.Windows PowerShell 语言是直观的,并支持贵企业现有的脚本和命令行工具投入.Exchange Server 2007 和 System

随机推荐