テキストファイルの文字コードを変換する

テキストファイルの文字コードを変換するプログラムを作成しました。shift-jisのファイルをeuc-jpに変換します。StreamReaderオブジェクトのreadtoend()メソッド使用してファイルの文字列をすべて取得します。オブジェクトを生成する際はshift-jisを指定します。次に、読み込んだファイルをコピーしバックアップファイルを作成します。最後にStreamWriterオブジェクトのwrite()メソッド使用して取得した文字列を書き込みます。オブジェクトを生成する際はeuc-jpを指定します。プログラムを実行するときは、変換する1つのファイルパスを引数に指定します。(フルパスで指定しないとエラーになります。)

set-PSDebug -strict
# ---------------------------------
# テキストファイルの文字コードを変換する
# (shift-jis → euc-jp)
# 引数:テキストファイルのフルパス
# ---------------------------------
Function ConvCharCode{
    # ---------------------------------
    # 事前準備
    # ---------------------------------
    # 引数を取得する
    param([string]$file_path)
    
    # 文字コード名設定
    [String]$in_code = "shift-jis"  # 入力用
    [String]$out_code = "euc-jp"    # 出力用
    
    # encodingオブジェクト取得
    $in_encoding = [System.Text.Encoding]::GetEncoding($in_code)    # 入力用
    $out_encoding = [System.Text.Encoding]::GetEncoding($out_code)  # 出力用
    
    # ---------------------------------
    # ファイル読み込み(shift-jis)
    # ---------------------------------
    # 読み込み用ストリームオブジェクト生成
    $rstream_obj = new-Object system.IO.StreamReader($file_path,$in_encoding)

    # 現在位置から最後まで読み込み
    $read_str = ""
    $read_str = $rstream_obj.readtoend()
    
    # ファイルクローズ
    $rstream_obj.close()
    
    # ---------------------------------
    # バックアップを作成する
    # ---------------------------------
    # バックアップファイル名設定
    $bkfile_path = $file_path + ".bak"
    
    # バックアップファイルが既に存在する場合は削除する
    if (test-Path -path $bkfile_path -type leaf){
        (get-Item $bkfile_path).delete()
    }
    
    # バックアップを作成する
    [void](get-Item $file_path).copyto($bkfile_path)
        
    # ---------------------------------
    # ファイル書き込み(euc-jp)
    # ---------------------------------
    # 書き込み用ストリームオブジェクト生成
    $wstream_obj = new-Object system.IO.StreamWriter($file_path,$false,$out_encoding)
    
    # 読み込んだ文字をすべて書き込み
    $wstream_obj.write($read_str)
    
    # ファイルクローズ
    $wstream_obj.close()
}