gpt4 book ai didi

powershell - 脚本似乎只处理管道中的最后一个对象

转载 作者:行者123 更新时间:2023-12-03 08:03:03 25 4
gpt4 key购买 nike

我有一个脚本,我正在尝试向其中添加管道功能。但是,我看到了奇怪的行为,脚本似乎只针对管道中的最终对象运行。例如

param(
[parameter(ValueFromPipeline=$true)]
[string]$pipe
)

foreach ($n in $pipe) {
Write-Host "Read in " $n
}

太简单了,不是吗?然后我运行 1..10 | .\test.ps1它只输出一行 Read in 10 .更复杂的是,我想在其中使用的实际脚本有更多参数:
[CmdletBinding(DefaultParameterSetName="Alias")]
param (
[parameter(Position=0,ParameterSetName="Alias")]
[string]$Alias,

[parameter(ParameterSetName="File")]
[ValidateNotNullOrEmpty()]
[string]$File

<and so on>
)

最佳答案

您需要使用 process{} 包装脚本的主体,这将允许您处理管道上的每个项目。由于将为每个项目调用进程,您甚至可以取消 for 循环。

因此,您的脚本将如下所示:

param(
[parameter(ValueFromPipeline=$true)]
[string]$pipe
)
process
{
Write-Host "Read in " $pipe
}

您可以在此处阅读有关输入处理的信息: Function Input Processing Methods

关于powershell - 脚本似乎只处理管道中的最后一个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14244910/

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