您现在的位置: IT专家网 > WinSystem子站 > 网络管理
使用Windows Powershell来过滤输出项
用户使用cmdlet命令同时结合变量来过滤输出项……
上个月,我们使用Windows管理规范(Windows Management instrumentation,简称WMI)向大家展示了Windows powershell如何和外部设备一起工作。那次专栏,我们先做了下磁盘目录清点,然后进行过滤,再把最后的结果排列出来。这样大家就只能看见在大量数据中的一部分有效的数据结果了。
在刚开始那个练习的时候,你也许注意到了存在大量的数据结果。但你们还记得么?当时我就能很轻松的开始因为我当时知道我所需要的那个帮助课程的确切的名称。正象我当时所说,这有成百上千的帮助(如果你一使用get-wmi命令的话,你就将看到),我不可能记得JOY TO THE WORLD里的每个字,很显然,我也不可能记得Windows管理规范里的每一个帮助课程的名称。但为了做成那个演示,我不得不玩点小把戏,所以在开始前我选择使用了一个我知道的课程帮助。
那就让我们不使用小骗局来过滤内容就能使浏览和查看windows管理规范变成容易。其实这很简单,我们使用一种新的叫cmdlet(command-let)的小命令结合变量一起使用。
基本文本过滤
用VBScript过滤文本输出在规则表述上浪费了很多时间。然而,powershell虽然也支持规则表述,但它并不是必须的。你可以用select-string这个小命令来代替。它之所以简洁,是因为它这样就可以工作了:用小命令行填入你所要搜索的信息,它就给出你要查找的文本。
"PowerShell", "Seashell", "Monad" | select-string-pattern "PowerShell"
在这个命令行中,你建立了三个字符串,并且用管线连接SELECT-STRING命令,告诉他们你所要找的字符串读取值为POWERSHELL。这正是此命令行的作用。使用此命令行的时候,要严格按照上面所给出的格式进行书写,哪怕是多了一个空格,系统也会报告错误。但是查找完整的字符串并没有那么大的作用。那要是你想再从刚才的结果里找到带有“SHELL”字样的字符串,你该怎么做呢?你只需要对命令行做一点点修改,把pattern后面引号里的powershell改成shell就可以了。
"PowerShell", "Seashell", "Monad" | select-string -pattern "shell"
这个命令行将返回“PowerShell”和“Seashell”两个值。因为Select-String默认是大小写不敏感的,但是也不是非得这样,您可以对这个例子做一个简单的修改。
"Powershell", "Seashell", "Monad" | select-string -pattern "shell" –casesensitive
尽管“shell”字样同时出现在PowerShell和Seashell里,但这次返回的结果将只是“Seashell”一个了。
查找文件
滤出你输入的正文并不象你想象得那样。当你要查找匹配的条目,而一堆的数据在放在那,你又不知道你里都放了些什么的时候,它就显得非常的有用了。当这个时候,你可以使用google桌面在你的电脑中进行查找,现在你也可以使用Select-String了,它与google桌面有异曲同工之妙。
举个例子,比如说我正致力写一个脚本,其间需要一些Select Case的代码实例。我知道有一个装着各种各样脚本样本的大库,但是我并不想一个个的去看每一个例子,因为我也不知道那里是否就真的就有我所需要的东西。因此,我使用select-string来搜索库里的目录,下面将会演示。(如果只是想在当前的文件夹进行搜索,则不需要提供路径。)输出的结果就是每个脚本的相关行,如下所示:
Select-string -path "c:scripts*.vbs" "Select Case"
C:scriptsconcatenate.vbs:2:Select Case Wscript.Arguments(0
C:scriptsenhanced.vbs:7:Select Case sInput
C:scriptssmartmapinventory.vbs:4:Select Case
colNamedArgs.Exists("name")
好了,现在我就可以打开脚本文件来看一下Select Case是怎么使用的了。
- 本文关键词:

