これはただのスクリプトブロックを実行し、Trueの返却を確認するメッセージが表示されます。限られたテストから、WhereはPSオブジェクトでより速く(約1秒)なります。注:Stopwatchが間違っている可能性があります。 Where-Objectはドキュメントを持ち、ForEach-Objectよりも高速に実行されます。 BeWhere PSv4にバグがあります。
スクリプトブロック
write-host "Started at $(get-date)"
$j = $i.Where({$_ -like "*"})
write-host "Ended at $(get-date)"
write-host "Total Elapsed Time: $($elapsed.Elapsed.ToString())"
00:00:00.0309266
ForEach-Object
$elapsed = [System.Diagnostics.Stopwatch]::StartNew()
write-host "Started at $(get-date)"
$j = $i | %{$_ -like "*"}
write-host "Ended at $(get-date)"
write-host "Total Elapsed Time: $($elapsed.Elapsed.ToString())"
00:00:01.0555753
Where-Object
$elapsed = [System.Diagnostics.Stopwatch]::StartNew()
write-host "Started at $(get-date)"
$j = $i | ?{$_ -like "*"}
write-host "Ended at $(get-date)"
write-host "Total Elapsed Time: $($elapsed.Elapsed.ToString())"
00:00:00.0348174