PowerShellでテキストファイルの置換・保存・比較をしたい

【これも先週下書きを書いたやつなので、記憶がありません】
あるファイルを編集する用のプログラムを作る。
具体的には、特定の項目やパラメータを任意の値に書き換える、置換するみたいなイメージ。
やることとしては、
・設定ファイルのバックアップを作成
・変更したい設定項目(文字列)の存在を確認(検索)する
・置換し、該当ファイルを上書き保存する
・バックアップと編集後のファイルの差分をチェック

んで、こういうのができた。

$workdir = "C:\tmp\20190306"
$targetfile = '.\test.txt'
$backupname = '.\test.txt.bk'

Set-Location $workdir

#バックアップを作成
Copy-Item $targetfile $backupname
$wordchk = Get-Content ".\test.txt"

#置換対象文字列を探す
if ($wordchk -match "bbbb") {
Write-Host "Target word is Exist. I'll do it."
} else {
Write-Host "Target word is not exist. exit."
exit
}

#置換してからのファイル上書き
$wordchk = Get-Content ".\test.txt" | ForEach-Object {$_ -replace "bbbb","BBBB"}
$wordchk | Out-File $targetfile

#完了したら更新前後を比較させたい
#この場合、比較用にGet-Contentで変数を格納し直さないとダメっぽい
$before = Get-Content .\test.txt.bk
$after = Get-Content .\test.txt

Compare-Object -CaseSensitive $before $after -IncludeEqual

test.txtの内容は以下の通り。

aaaa
bbbb
cccc
dddd
eeee
ffff
GGGG
HH HH
ii\ii

以下悩んだところを羅列。

・if内で置換・保存を行おうとしたが、なんか上手くいかなかったので、ifによる文字列有無の判定と置換の処理は別々にした。
・Get-Content→ForEach-Objectまではよかったが、さらにそこからパイプでOut-Fileに渡そうとすると、何も書き込まれなかった。Get-Content→ForEach-Objectの処理結果を見たけど、戻り値がnullというわけではなさそうだったが…分離したらなんかうまくいった。
・Out-Fileの箇所は、Set-Contentでもいける。どっち使ってもいいと思う。

あと、Compare-Objectの見方について。
それぞれ、上記で言う$beforeの内容と比較して、
 ==:変更なし
 =>:追加分
 <=:削除分
という意味のようだ。
InputObjectとか、SideIndicatorの名称をファイル名にして、どっちがどっちかわかりやすくしたかったけど、どうやらできなさそうなので断念。
また、Compare-Objectで大文字・小文字を区別するためには、-CaseSensitiveをつける必要がある。
つけないと、大文字・小文字の差分は変更なしと見なして比較する。
尚、-CaseSensitiveをつけて実行するとこうなる

InputObject SideIndicator
 ----------- -------------
aaaa ==
cccc ==
dddd ==
eeee ==
ffff ==
GGGG ==
HH HH ==
ii\ii ==
BBBB =>
bbbb <=

つけないとこうなる(bbbb部分が==(変更なし)となっている)

InputObject SideIndicator
 ----------- -------------
aaaa ==
bbbb ==
cccc ==
dddd ==
eeee ==
ffff ==
GGGG ==
HH HH ==
ii\ii ==