我能用Windows PowerShell做什么:过滤返回的数据

注:本篇文章,未在联系作者以及得到许可的情况下, 禁止以任何形式进行转载。

By:Anders      Mail:katrina520@163.com       

过滤返回的数据

Where-Object cmdlet提供了一种方法,用其他cmdlets为你过滤数据。举例来说,默认情况下Get-Process cmdlet一般会返回有运行在你计算机上所有的进程信息。不过,假设你只对那些进程使用超过200个句柄的进程有兴趣。 (我们不知道为什么,你对它们有兴趣,但… … )。使用Ger-Process只有得到子进程,那么由Where-Obejct完全输送结果:
Get-Process | Where-Object {$_.handles -gt 200}

仔细注意这个语法。首先, where子句是密封在括号里的;此外,$_.notation是用来来代表默认对象(也就是说,对象被开始被转到各管道线)。最后,但肯定不是最小,注意比较运算符来指明大小:如 -gt 大于 “>”。

Windows PowerShell不使用标准算术的比较运算符;相反,它使用诸如这些操作符:

-lt -- 小于

-le -- 小于或等于

-gt -- 大于

-ge -- 大于或等于

-eq -- 等于

-ne -- 不等于

-like类似(用于文本的通配符比较)

换言之,如果我们正在寻找的进程句柄均大于或等于200,那么我们使用这个命令:
Get-Process | Where-Object {$_.handles –ge 200}

您也可以使用 -and 和 - or参数,以创造更多的有限目标数据库。举例来说,假设你想返回所有实例的svchost使用超过200多句柄的进程。你必须要做的是使用 -and 标准的分开这两者分句:

Get-Process | Where-Object {$_.handles -gt 200 -and $_.name -eq "svchost"}

同样,假设你想列出所有使用超过200以上的句柄数的svhost进程(换言之,所有使用超过200以上的句柄数的svhost进程,不管有多少)。在这种情况下,使用 -or 参数加入在两个部分之中:

Get-Process | Where-Object {$_.handles -gt 200 -or $_.name -eq "svchost"}

这里的另一个例子;这个(使用Get-ChildItem cmdlet )只显示,C:/Scripts文件夹中大于100000字节的文件:

Get-ChildItem c:/scripts | Where-Object {$_.length -gt 100000}

并且我们不要忘记 - like操作符。这个命令返回所有包含在C:/Scripts里的文件,其中包括文件名为test的字符。注意利用两个星号作为通配符字符:

Get-ChildItem c:scripts | Where-Object {$_.name -like "*test*"}

你可以熟练的取回这个数据类型:

Mode                LastWriteTime     Length Name
----                  -------------       ------   ----
- a ---            5 / 6 / 2006    10 : 24  PM       34198  test.csv
- a ---           5 / 19 / 2006     9 : 11  AM        5918  test.htm
- a ---           5 / 19 / 2006     8 : 16  AM       34226  test.log
- a ---           5 / 19 / 2006     1 : 20  PM          65  test.ps1
- a ---           5 / 20 / 2006     9 : 52  AM         150  test.psc1
- a ---           5 / 20 / 2006     9 : 52  AM         150  test.psc1e.psc1
- a ---           5 / 19 / 2006     1 : 27  PM         565  test.txt
- a ---           4 / 17 / 2006     6 : 41  PM       24064  test.txt.doc
- a ---           5 / 19 / 2006     1 : 45  PM        1971  test.vbs
- a ---           5 / 17 / 2006     1 : 41  PM        9248  test.xls
- a ---           5 / 19 / 2006     1 : 20  PM      628234  Test.xml
- a ---            4 / 6 / 2006    10 : 26  PM         205  test_NODUPL.txt

 

 

 

英文原文:http://www.microsoft.com/technet/scriptcenter/topics/msh/cmdlets/where-object.mspx

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值