、次の行:Select-ObjectはPowerShell v3のパイプラインをどのように停止しますか? PowerShellのV2で
1..3| foreach { Write-Host "Value : $_"; $_ }| select -First 1
なる表示:すべての要素がパイプラインを押し下げたため
Value : 1
1
Value : 2
Value : 3
。しかし、V3上記線のみ表示:2及び3は、Foreach-Object
に送信される前に
Value : 1
1
パイプラインが停止している(注:Select-Object
ため-Wait
スイッチはすべての要素がforeach
ブロックに到達することを可能にします)。
Select-Object
はどのようにパイプラインを停止するのですか?foreach
または自分の機能からパイプラインを停止できますか?
編集:私はパイプラインの外にループして続行しながら、私は...やるにおけるパイプラインをラップすることができます知っています。
function Start-Enumerate ($array) {
do{ $array } while($false)
}
Start-Enumerate (1..3)| foreach {if($_ -ge 2){break};$_}; 'V2 Will Not Get Here'
しかしSelect-Object
はので、私はへの道があったことを期待していたこれらの技術のいずれかを必要としない:私はまた、v3の中で、私はこのような何かを(それがV2では動作しません)行うことができますことを発見しましたパイプライン内の単一ポイントからパイプラインを停止します。
だから、StopUpstreamCommandsExceptionを探しているが、あなたのことができそれは内部であるので使用しないでください。ここには、それのためのMS接続の提案があります:https://connect.microsoft.com/PowerShell/feedback/details/768650/enable-users-to-stop-pipeline-making-stopupstreamcommandsexception-public –
ありがとう、私を指している@LarsTruijensそれに。私はそれを投票した。 – Rynant