Powershellでファイルを1行ずつチェックしながら色々やりたい

4月から全く別の職場に異動になった。今度は慣れ親しんだLinuxの仕事らしい。
というわけで、PowerShellとはもうおさらばだ。もう二度と会うこともあるまい。会うんならちゃんと事前に開発の仕事だと正しく要件を伝えていただくのと、プログラミングの基礎を教えてからにしてクレメンス…


今回やりたかったこと。
・とあるファイル(test.txt)内のある特定の行〜特定の行の間に、特定の文字列(パラメータ名)がないかを検索する
・特定の行〜特定の行の値は、前段の処理で変数に格納済み(foreachで何とかできる)
・そのパラメータは、「パラメータ名=値」という書式で1行ずつ記載されている。
・もし、この「値」があるべき値(数)でなければ、その行ごと置換し、あるべき値に書き換える。

#パラメータ名だけで検索したいから、spritを使い=で区切っている。
$KeyName = $SubItem -split "="

#パラメータ名すなわち$KeyName[0]が存在する行を探す
#存在が確認できたら、その行の内容を変数に格納する
$linechk = Get-Content .\test.txt
$line_count = 0

foreach ($line in $linechk) {
$line_count = $line_count + 1
if((($line -match $KeyName[0]) -and ($line_count -gt $StartNum) -and ($line_count -lt $EndNum)){
$line_count = $line_count - 1
$UpdateTarget = (Get-Content .\testini.ini)[$line_count..$line_count]
   #「特定の1行」の値をこれで無理矢理抜き取った
break
}
}

#更新前と更新したいSubItemの値を比較し
#差分があれば、まるまる置換する形で更新する
#置換すべき行は、上記処理の$line_countで特定している
foreach ($line in $line_count..$line_count) {
if ($UpdateTarget -eq $SubItem) {
Write-Host "パラメータの更新はありません。終了します。"
break
} else {
$UpdateContent = Get-Content .\testini.ini
$UpdateContent[$line_count]=$UpdateContent[$line_count] -replace "$UpdateTarget","$SubItem"
$UpdateContent | Out-File $targetfile
Write-Host "パラメータを最新化しました。更新が完了しました"
break
}
}