Looking for powershell Answers? Try Ask4KnowledgeBase
Looking for powershell Keywords? Try Ask4Keywords

PowerShellループ


前書き

ループとは、特定の条件に達するまで継続的に繰り返される一連の命令です。あなたのプログラムがコードブロックを繰り返し実行できるようにすることは、プログラミングの最も基本的ではあるが有用なタスクの1つです。ループを使用すると、非常に単純なステートメントを書くことができます。条件に達した場合、次の命令は次のシーケンシャル命令に「分岐」するか、またはループ外に分岐します。

構文

  • (<Initialization>; <Condition>; <Repetition>){<Script_Block>}

  • <コレクション> | Foreach-Object {<Script_Block_with _ $ __ as_current_item>}

  • foreach(<Collection>内の<Item>){<Script_Block>}

  • while(<条件>){<Script_Block>}

  • while {<Script_Block>} while(<Condition>)

  • (<Condition>)まで{{Script_Block>}してください

  • <コレクション> .foreach({<Script_Block_with _ $ __ as_current_item>})

備考

フォアハ

PowerShellでforeach-loopを実行するには、複数の方法があり、それぞれ独自の長所と短所があります。

溶液利点短所
Foreachステートメント最速。静的コレクション(変数に格納されている)に最も適しています。 パイプライン入力または出力なし
ForEach()メソッド Foreach-Objectと同じスクリプトブロック構文ですが、高速です。静的コレクション(変数に格納されている)に最も適しています。パイプライン出力をサポートします。 パイプライン入力はサポートされていません。 PowerShell 4.0以上が必要
Foreach-Object(コマンドレット) パイプライン入出力をサポートします。接続の初期化と終了のための開始と終了スクリプトブロックをサポートします。最も柔軟なソリューション。 最も遅い

パフォーマンス

$foreach = Measure-Command { foreach ($i in (1..1000000)) { $i * $i } }
$foreachmethod = Measure-Command { (1..1000000).ForEach{ $_ * $_ } }
$foreachobject = Measure-Command { (1..1000000) | ForEach-Object { $_ * $_ } }

"Foreach: $($foreach.TotalSeconds)"
"Foreach method: $($foreachmethod.TotalSeconds)"
"ForEach-Object: $($foreachobject.TotalSeconds)"

Example output:

Foreach: 1.9039875
Foreach method: 4.7559563
ForEach-Object: 10.7543821

Foreach-Objectは最も遅いですが、パイプラインサポートは、到着時にアイテムを処理できるように(ファイルの読み取り中、データの受信中など)役立ちます。これは、処理前にすべてのデータをメモリにロードする必要がないため、大きなデータと低いメモリで作業する場合に非常に便利です。

ループ 関連する例