PowerShell 的管道机制与Linux 下的Shell管道机制相同,都是将前一个命令的输出作为后一个命令的输入,这样就可以支持类似链式编程的编程模式。比如我们获取某台Server上的服务,对某些处于停止状态的服务进行重启。这时候我们的策略是获取所有的服务列表,然后使用Where-Object 接受服务列表,筛选Service状态是Stopped的进行重启。类似这种处理的需求是非常常见的,其中一个例子如下。
1)链式编程
首先,我们获取前缀为sql的服务,然后使用管道筛选状态是 "Stopped"的服务,然后我们再使用管道对每个处于Stopped状态的服务进行重启。这样三个步骤,简简单单的两个PowerShell 管道就解决了,其间接性可见一斑。注:这里的两处错误是由于服务无法启动和Server拼写错误导致,与管道无关。
2)格式化输出
PowerShell 的管道可以用来做格式化输出,通常是按照列表和按照Table形式进行输出,这种应用也是很常见的。
这样我们就得到了列表形式的结果。下面我们尝试获取Table形式的结果。
注:链式编程章节的第一条语句的执行结果就是Table形式的,故不再赘述。
3)对结果进行分析统计
我们可以根据文件的后缀名统计文件数。
4)使用管道输出命令执行结果
运行结果如下,注:新增了ServiceList.xls
这是目前总结的几种管道的应用,后面会继续深入探讨。