注:本篇文章,未在联系作者以及得到许可的情况下, 禁止以任何形式进行转载。
By:Anders Mail:katrina520@163.com
过滤返回的数据
Get-Process | Where-Object {$_.handles -gt 200}
仔细注意这个语法。首先, where子句是密封在括号里的;此外,$_.notation是用来来代表默认对象(也就是说,对象被开始被转到各管道线)。最后,但肯定不是最小,注意比较运算符来指明大小:如 -gt 大于 “>”。
Windows PowerShell不使用标准算术的比较运算符;相反,它使用诸如这些操作符:
| • | -lt -- 小于 |
| • | -le -- 小于或等于 |
| • | -gt -- 大于 |
| • | -ge -- 大于或等于 |
| • | -eq -- 等于 |
| • | -ne -- 不等于 |
| • | -like – 类似(用于文本的通配符比较) |
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

被折叠的 条评论
为什么被折叠?



