首先我们来了解下“命令管道”,那什么是命令管道,命令管道的符号是一个竖“|”,命令管道的意思是前一个命令的输出作为后一个命令的输入。不明白这句话,没有关系下面我们来通过一个例子说明下,你就马上明白了。

 

如下图,我的D盘有很多txt文件

p_w_picpath

 

我使用命令查看下,我输入dir查看到的txt文件和我们使用图像界面打开的是一样的

p_w_picpath

 

下面我想找到名称为a的txt文档,我们输入 dir | find “a” 如下图,我们dir把查找到的文件输出,然后交给find进行输入,然后就找了文本a

p_w_picpath

 

以上的例子就是命令管道。

 

比如现在我知道PowerShell有一个命令Get-Service,输入这个命令后显示当前计算机的服务,在这里我们注意到有3列,其中我们注意到有Name这样一列

p_w_picpath

 

但是我只希望看下Spooler,这个打印服务那么我们怎么办?那么我们就可以进行列名进行筛选,我们输入Get-Command –Name spool* ,如下图,我们就筛选出来spooler服务

p_w_picpath

 

但是你发现没有上面Get-Command –Name spool* 输出格式是列表的方式,这是默认方式,可是我希望它输出信息是否可以更加详细些,当然可以我们输入Get-Command –Name Spool* | fl ,fl是什么? fl 就是 Format-List的缩写,fl就是让命令输入信息更加详细

p_w_picpath

 

以上,我们就是使用列名进行了筛选,当然不是所有的列名都是可以进行筛选,但是如果列名可以筛选我们可以优先考虑。

 

假设列名无法进行筛选,那么我们可以使用Where Object,比如我们现在在Poweshell中输入Get-Process,那么将显示当前计算机的进程,我们注意到有个4700的进行是explorer

p_w_picpath

 

假设我想筛选进程ID是4700,那么我们就可以输入Get-Process | Where-Object {$_.id -eq 4700},Get-Process获取进程,然后使用命令管道 ,然后使用Where-Object {$_.id -eq 4700},$_. 是引用对象的语法,eq是精确查询,我们还可以使用参数-like(表示模糊查询)

p_w_picpath

 

p_w_picpath

 

 

p_w_picpath

 

p_w_picpath

菜鸟学习PowerShell,我把PPT传下,需要可以进行下载。