powershell - 管道究竟是做什么的?在 PowerShell 中是什么意思?

标签 powershell

例如:

get-service | export-csv C:\services.csv

这里到底发生了什么?

最佳答案

快速回答Get-Service的输出对象成为Stop-Service的参数的输入接受管道输入。
细节
stop-service的情况下,这个参数是-InputObject ,它接受 ServiceController一个或多个对象( ServiceController[] )。自 Get-Service输出该类型的对象,您可以使用管道将其传递给 Stop-Service .如果有ServiceController的集合对象,Stop-Service将在称为流的过程中为集合中的每个项目调用一次。
当项目在管道上流式传输时,它们会在可用时立即移动。如果您想等到集合完成再传递它,您可以将输入包裹在一组括号中。
查找接受管道输入的参数
如果您曾经使用过 Get-Help要了解特定 cmdlet,您可以滚动到参数部分以查看哪个参数接受管道输入:

PS C:\> Get-Help Stop-Service -full

...

    -InputObject <ServiceController[]>

        Required?                    true
        Position?                    0
        Accept pipeline input?       true (ByValue)
        Parameter set name           InputObject
        Aliases                      None
        Dynamic?                     false

    -Name <string[]>

        Required?                    true
        Position?                    0
        Accept pipeline input?       true (ByValue, ByPropertyName)
        Parameter set name           Default
        Aliases                      ServiceName
        Dynamic?                     false
因此,通过查看该 cmdlet 的文档,我们看到您可以使用 ServiceController 对象的集合甚至服务的字符串名称作为管道上的输入。以下是使用相关 cmdlet Get-Service 的示例:
#Using a string
PS C:\Users\2.34> "MySQL" | Get-Service

Status   Name               DisplayName
------   ----               -----------
Running  MySQL              MySQL

#Using a ServiceController object
PS C:\> Get-Service "MySQL" | Get-Service

Status   Name               DisplayName
------   ----               -----------
Running  MySQL              MySQL
更多阅读
如果您对通过属性名称了解管道输入感兴趣,可以查看 TechNet 上的一篇很棒的文章 here .您可以找到 about_Pipelines文档 here .

关于powershell - 管道究竟是做什么的?在 PowerShell 中是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21028439/

相关文章:

regex - 日志文件上的PowerShell正则表达式捕获了太多内容

powershell - 如何从组的成员属性中提取安全标识符?

powershell - 如何将特定文件制作为零字节文件

.net - 如何使用 PowerShell 检查文件是否超过特定时间?

powershell - 我可以将 CSV 文件打包为模块资源吗

algorithm - 确定陈述中真实案例数量的最短可能方法

git - 在 git 中创建别名

c# - 将多个 XML 转换为 JSON 列表

powershell - 如何使用 ffmpeg 从 Powershell 脚本中自动删除黑条?

powershell - 内存使用 powershell 7.03 Foreach-object 并行