Articles

Powershell ForEach Loop Statement Tutorial with Examples

ForEachは、オブジェクト、文字列、数値などの指定されたリスト、配列、またはコレクションに対して反復ま ForEachは非常に一般的なループメカニズムで、ファイル、数字、文字列、プロセスなどをループするようなさまざまなケースを使用できます。 Powershellバージョン4.0は、ForEachループにいくつかのパフォーマンスの改善をもたらします。

PowerShell ForEach構文

Foreach文は、我々はITEMCOLLECTIONCODE-BLOCKを使用する次の構文を持っています。

ForEach(ITEM in COLLECTION){ CODE BLOCK}
  • ITEMは、反復ごとに変更される単一の値またはオブジェクトです。
  • コレクションは、配列、コレクション、値のリスト、または1,2,3,4のようなオブジェクトです。
  • コードブロックは、一般的にITEMを使用する実際の操作が実行されるブロックです。 このブロックは、単一または複数の行にすることができます。

文字列の配列を介してForeach

簡単な方法で、指定された文字列配列のリストを反復処理できます。 複数の都市名を保持する”cities”という名前の配列を反復処理します。 以下のようなコマンド”echo”で各都市名を印刷します。P>

$cities = ("istanbul,ankara,canakkale")foreach ($city in $cities){ echo $city}
文字列の配列を介してForeach

すべての都市名がpowershellに印刷されていることがわかります単一行のターミナル。

Foreach Through An Collection Of Numbers

前の例では、指定された文字列のリストをループしました。 また、数字のリストを反復またはループすることもできます。 numbersという名前の配列を作成し、この数値配列の各項目を反復処理します。P>

$numbers=(1,2,3,4,5)foreach ($number in $numbers){ echo $number}
数字のコレクションを介してForeach

$_Usage

いくつかのコマンドレットを使用してコマンドレットの出力をforeachにリダイレクトする場合、各項目またはオブジェクトに”$”を使用できます。 たとえば、”Get-Process”コマンドレットを使用すると、各項目またはプロセスは各反復で$に割り当てられます。 Name$.Nameのような属性を指定して、以下のように印刷できます。

PS> Get-Process | ForEach-Object {$_.ProcessName}
$_ Usage

We can also print multiple attributes in foreach by delimiting them with comma.

PS> Get-Process | ForEach-Object {$_.ProcessName, $_.ID}
$_ Usage

Foreach Through Files

We can also loop through files by using Get-ChildItem cmdlet. Get-ChildItemdirMSDOSコマンドのようなファイルとフォルダを一覧表示します。 この出力は、Echoコマンドでコンソールに書き込まれます。div>

foreach($file in Get-ChildItem) {Echo $file}
ファイルを介してForeach
ファイルを介してForeach

のような特定のファイル拡張子を介して、指定された拡張子を具体的にリストすることができます。 拡張子は、一般的にテキスト、avi、mkv、mp3、docなどのようなファイルタイプを提供します。 この例では、*.batまたはBatファイルのみをリストします。P>

 foreach($file in Get-ChildItem *.bat) {Echo $file}
Batのような特定のファイル拡張子を介してForeach

Foreach

autoexec.batが表示されます。

FOREACH Over CSV File

CSVファイルは、構造化された方法でテキストデータを格納するために使用されます。 以下のようにCSVファイルの各行で簡単にforeachできます。 この例では、Ip CSVファイルを読み取り、Powershellコンソールを印刷するためにforeachに提供します。p>

$IPs = (Get-Content IP.csv).split(",")foreach ( $IP in $IPs){ echo $IP}

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です