这里稍微解释一下,Where-Object的参数的是一个布尔表达式,$_代表过滤过程中经过管道的当前结果。另外Where-Object还有一个别名 “?” 更形象。
选择对象的属性
包含在每一个对象中的属性可能有很多,但是并不是所有的属性你都感兴趣,这时可以使用Select-Object 限制对象的属性。接下来的例子演示如果获取机器上匿名帐号的完整信息。
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
如果你只对用户名、描述,启用感兴趣。
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*
限制对象的数量
列出最后修改的5个文件
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个进程
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
逐个处理所有管道结果
如果想对管道结果进行逐个个性化处理可是使用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:
删除重复对象
Get-Unique可以从已排序的对象列表中删除重复对象。Get-Unique会逐个遍历对象,每次遍历时都会与前一个对象进行比较,如果和前一个对象相等就会抛弃当前对象,否则就保留。所以如果对象列表中没有排序,Get-Unique不能完全发挥作用,只能保证相邻对象不重复。










