gpt4 book ai didi

powershell - PowerShell 管道是连续馈送吗?

转载 作者:行者123 更新时间:2023-12-03 11:22:16 24 4
gpt4 key购买 nike

从 CmdLet 发送到管道中的项目是否会立即传递到下一个 CmdLet,或者它们是否会进入一个内部 PS“累加器”,将它们存储起来直到当前 CmdLet 完成,然后将它们送入下一个?

有没有可以配置连续模式的参数?如果一个 CmdLet 接受单个对象,它可以在数据进入管道时被调用,但如果一个 CmdLet 接受一个数组,则可能 PS 累加并发送整个数组。例如,排序需要一个完整的集合。

我对编写长期运行的、开放式的、流媒体风格的 CmdLets 感兴趣。

谢谢。我找不到关于管道的任何深入讨论。

最佳答案

第一部分:不,PowerShell 函数不一定会立即传递到 cmdlet 中,而是会传递到名为 $input 的特殊变量中。

$input 在函数开始执行之前填充了所有传入的管道对象。如有必要,PowerShell 甚至可能会延迟执行,直到所有传入的管道数据完成。

第二部分:如果您想持续处理您的数据而不是等待它进入并存储在 $input 中,您可以使用 过滤器 关键字代替 功能编写函数/过滤器时的关键字(过滤器的行为与函数类似,只是它们不等待数据,而是在数据可用时使用它)。

例如

filter Get-OddEven {
$x = $_ % 2

# ... other logic here
}

希望这会有所帮助,以免我抄袭,所有这些都来自 Jerry Lee Ford, Jr 的“Microsoft Windows PowerShell Programming For the Absolute Beginner”一书,如果您想进一步了解的话。

关于powershell - PowerShell 管道是连续馈送吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14509345/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com