PowerShell コードに問題があります。何らかの理由で、catch ブロックからのエラー メッセージが表示されずに、スクリプトが finally ブロックにジャンプすることがあります。これは私の PowerShell コードです:
try
{
$sleepTime = $reservationDuration - $prepareTime
(get-date -format hh:mm:ss)+"`tinfo:`tstart sleep before warning VIP sleep-time:"+$sleepTime | out-file $logFilePath -append
start-sleep -s $sleepTime
(get-date -format hh:mm:ss)+"`tinfo:`tsleeptime over" | out-file $logFilePath -append
}
catch
{
(get-date -format hh:mm:ss)+"`terror:`tchaught exception: "+$error[0] | out-file $logFilePath -append
}
finally{
(get-date -format hh:mm:ss)+"`tinfo:`tFinally" | out-file $logFilePath -append
}
ご覧のとおり、何が起こったかを確認するためにいくつかのログ ファイルを作成しています。$sleepTime 変数で常に正しい int 値を取得しています。ただし、「sleeptime over..」または「chaught exception...」さえも書き込まずに、finally ブロックにジャンプすることがあります。