Excelを読み込んで操作する処理のひな形

ExcelをCommを使って呼び出す際のひな形。
Excelオブジェクトが無い場合の処理等の例外処理が甘いので、今後追加を行う。

#ファイルオープンダイアログを動かすための準備処理
[void][System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")
#ファイルオープンダイアログの設定値
$fd = New-Object System.Windows.Forms.OpenFileDialog
$fd.DefaultExt = ".xlsx"
$fd.Filter = "Excel File(*.xlsx)|*.xlsx"
$fd.Title = "仕様書を起こすためのExcelファイルを選択してください"
$dig_result = $fd.ShowDialog()

#ダイアログの結果がOK以外なら処理を終了する
if($dig_result -ne [System.Windows.Forms.DialogResult]::OK){
    Write-Host "処理を終了"
    Exit 1
}

#Excelファイルの読み込み
try{
    $excel = New-Object -ComObject Excel.Application
    $excel.Visible = $false

    #既存Excelの読み込み
    $book = $excel.Workbooks.Open($fd.FileName)

    #シートの読み込み
    $sheet = $excel.Workbooks.Item(1)

}catch [Exeption] {
    #処理中にエラーが発生した場合の処理
    Write-Host "エラー発生"
    Exit 2

}finally{
    #Commオブジェクトにnullを入れて破棄する
    $sheet,$book, $excel | ForEach-Object{
        
        [System.Runtime.InteropServices.Marshal]::ReleaseComObject($_)
        $_ = $null
    }
    Write-Host "終了"
}