以下の内容はhttps://bluebirdofoz.hatenablog.com/entry/2025/01/02/233904より取得しました。


PowerShellでコレクションに対して繰り返し処理を行う

本日はPowerShellの小ネタ枠です。
PowerShellでコレクションに対して繰り返し処理を行う方法です。

コレクションに対して繰り返し処理を行う

PowerShellでコレクションに対して繰り返し処理を行うには主に2種類の方法があります。
・ForEach-Objectコマンドレット
・foreachステートメント

ForEach-Objectコマンドレット

ForEach-Objectコマンドレットは入力されたコレクションの各項目に対して操作を実行します。
learn.microsoft.com

# コレクションをForEach-Objectを使って1つずつ標準出力する
@("alpha","beta","gamma","delta") | ForEach-Object {Write-Host $_}


foreachステートメント

foreachステートメントは与えられたコレクション内の各項目に対して操作を実行します。
learn.microsoft.com

# コレクションをforeachを使って1つずつ標準出力する
$collection = @("alpha","beta","gamma","delta")
foreach($element in $collection){
    Write-Host $element
}


ForEach-Objectとforeachの違い

処理を行う際、ForEach-Objectは要素を1つずつ読み込み、foreachは要素を初めに全て読み込むという違いがあります。
このため、大量のデータを処理する際にはforeachは大量のメモリを使用する可能性があります。

サンプルスクリプト

引数で指定されたフォルダの全てのファイル名を表示する以下のサンプルクリプトを作成しました。
・filenamecheck.ps1

# 第一引数を受け取る
# 引数を指定していない場合は対話形式で引数の入力を要求する
Param(
	[parameter(mandatory)][String]$argment01
)

# 第一引数をフォルダパスとして指定する
$folderPath = $argment01

# Test-Pathで指定したパスが存在するかどうかを確認する
if (-Not (Test-Path $folderPath)) {
    Write-Host "指定されたフォルダが見つかりません: $folderPath" -ForegroundColor Red
    exit
}

# Get-ChildItemでフォルダ内のすべてのファイル名を取得して標準出力する
# -Path:取得対象のパスを指定する
# -File:ファイルのみを指定する
# -Name:項目の名前のみを取得する
Get-ChildItem -Path $folderPath -File -Name | ForEach-Object {
    # $_にファイル名が引き渡される
    Write-Host $_
}




以上の内容はhttps://bluebirdofoz.hatenablog.com/entry/2025/01/02/233904より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14