Powershell 中的管道
管道
上个命令中的输出,通过管道作为下个命令的输入。Linux中的管道传递的是text
,但ps中传递的是object
。但是命令究竟返回的是什么类型呢?以下命令回答了这个问题:
get-service | get-member
这样就获取到get-service
的返回类型:
TypeName: System.ServiceProcess.ServiceController
于是,我们必须找到**从pipeline中获取 System.ServiceProcess.ServiceController
对象的命令:
Get-Command -ParameterType System.ServiceProcess.ServiceController
结果中有Stop-Service
命令,查看其帮助文档
Get-Help –Name Stop-Service
看到第一个参数是:[-InputObject] <ServiceController[]>
,一般来说,参数叫做InputObject
,都可以从管道中接收输入。通过以下命令查看完整帮助:
Get-Help –Name Stop-Service -Full
于是可以试验,获取服务,并停止服务:
Get-Service -Name ‘Apple Mobile Device’ | Stop-Service
以上命令:通过名字获取服务,返回的结果是
ServiceController
类型的,通过管道传给Stop-Service
作参数。