Mam skrypt, do którego próbuję dodać funkcję potoku. Widzę jednak dziwne zachowanie, w którym skrypt wydaje się działać tylko w stosunku do końcowego obiektu w potoku. Na przykład:Tylko skrypt przetwarza ostatni obiekt z potoku
param(
[parameter(ValueFromPipeline=$true)]
[string]$pipe
)
foreach ($n in $pipe) {
Write-Host "Read in " $n
}
Martwy prosty, nie? Następnie uruchamiam 1..10 | .\test.ps1
i wyprowadza tylko jedną linię Read in 10
. Dodając do złożoności, rzeczywisty scenariusz chcę użyć to w ma więcej parametrów:
[CmdletBinding(DefaultParameterSetName="Alias")]
param (
[parameter(Position=0,ParameterSetName="Alias")]
[string]$Alias,
[parameter(ParameterSetName="File")]
[ValidateNotNullOrEmpty()]
[string]$File
<and so on>
)
który pracował w moim prostego skryptu testowego powyżej, ale kiedy mogę umieścić go w moim skrypcie, to faktycznie uruchamia proces Get-Process (i kończy się niepowodzeniem, ponieważ otrzymuje blok skryptu dla parametru Name). – ASTX813
Czy umieścisz swój pełny skrypt lub przynajmniej istotne części w swoim pytaniu? –
Ponieważ moje pole rozwoju nie pozwala mi kopiować i wklejać, nie będę w stanie tego ciągnąć. Mogę powiedzieć, że próbowałem dodać więcej złożoności do skryptu testowego i znalazłem wyzwalacz. Kiedy dodałem funkcję "function something {Write-Host"} przed blokiem procesu {} w skrypcie testowym, zrobiło to samo. Jeśli jednak zawijam cały blok w procesie {}, działa skrypt testowy. – ASTX813