質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PowerShell

Windows PowerShellはコマンドラインインターフェースであり、システム管理を含むWindowsタスク自動化のためのスクリプト言語です。

コマンド

コマンドとは特定のタスクを行う為に、コンピュータープログラムへ提示する指示文です。多くの場合、コマンドはShellやcmdようなコマンドラインインターフェイスに対する指示文を指します。

DB2

DB2(IBM Database2)は、IBMのリレーショナルデータベース管理システム製品です。 UNIXとWindows、IBM社のメインフレームOS用が用意されており、 幅広いプラットフォームに対応しています。

Q&A

0回答

917閲覧

if elseの構文をtry catchに変える場合

corpsyuu.0505

総合スコア0

PowerShell

Windows PowerShellはコマンドラインインターフェースであり、システム管理を含むWindowsタスク自動化のためのスクリプト言語です。

コマンド

コマンドとは特定のタスクを行う為に、コンピュータープログラムへ提示する指示文です。多くの場合、コマンドはShellやcmdようなコマンドラインインターフェイスに対する指示文を指します。

DB2

DB2(IBM Database2)は、IBMのリレーショナルデータベース管理システム製品です。 UNIXとWindows、IBM社のメインフレームOS用が用意されており、 幅広いプラットフォームに対応しています。

0グッド

0クリップ

投稿2021/10/15 16:45

編集2021/10/16 12:48

前提・実現したいこと

Powershellでコマンドはある程度動くのですが、別ウインドウで開く際にexitで閉じると違うエラー判定が出てしまうのでif else からtry catchに変えようと考えています。実際にtry catchで作成してみましたがDB_NAMEを変更し正常と異常と切り分けしました見た目上は正常。正しいコマンド構文でどこがおかしいのかわからずご教授いただきたく。

発生している問題・エラーメッセージ

エラーメッセージはでませんが、存在しないDB_NAMEに変えてもエラー判定されず。

エラーメッセージ

該当のソースコード

Powershell

1$ARGS_TMP = "-w -i db2pd -hadr -db ${DB_NAME}" 2$PROCESS_TMP = Start-Process "db2cmd.exe" -WindowStyle Normal -Wait -PassThru -ArgumentList $ARGS_TMP 3 4try { 5 $PROCESS_TMP.ExitCode -ne 0 6 $WRITE_LOG = (Get-Date -Format "[yyyy/MM/dd HH:mm:ss]") + " DB2HADR稼働状況表示処理が成功しました。" 7 Write-Output $WRITE_LOG >> $LOG_FILE 8} catch { 9 $WRITE_LOG = (Get-Date -Format "[yyyy/MM/dd HH:mm:ss]") + " DB2HADR稼働状況表示処理が失敗しました。" 10 Write-Output $WRITE_LOG >> $LOG_FILE 11 12 $ERROR_FLG = 1 13}

試したこと

if elseで動きますが×で閉じないと正しい判定にならないため、try catchで構文を作成し実行。DB_NAMEを変えて正常と異常の切り分けをしましたが両方正常判定になる。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

gentaro

2021/10/15 17:48

> 変えようと考えています。 「考えてるだけじゃなくてまずやってみろよ」というツッコミがして欲しくて書き込んだの?
y_waiwai

2021/10/15 22:27

エラーが出たなら、エラーメッセージを提示しましょう エラーメッセージは、いらぬ翻訳省略しないで、出たそのママをコピペで提示してください
corpsyuu.0505

2021/10/16 12:50

実際にうまくいかなかったtry catch構文に載せなおしました。 ご教授いただければと思います。
Zuishin

2021/10/16 13:02

try の中に例外が出そうな部分がありませんが。
corpsyuu.0505

2021/10/16 13:46

こういう事でしょうか? $ARGS_TMP = "-w -i db2pd -hadr -db ${DB_NAME}" $PROCESS_TMP = Start-Process "db2cmd.exe" -WindowStyle Normal -Wait -PassThru -ArgumentList $ARGS_TMP if ($PROCESS_TMP.ExitCode -ne 0 ) { try { Start-Process "db2cmd.exe" -WindowStyle Normal -Wait -PassThru -ArgumentList $ARGS_TMP -ErrorAction Stop $WRITE_LOG = (Get-Date -Format "[yyyy/MM/dd HH:mm:ss]") + " DB2HADR稼働状況表示処理が成功しました。" Write-Output $WRITE_LOG >> $LOG_FILE } catch { $WRITE_LOG = (Get-Date -Format "[yyyy/MM/dd HH:mm:ss]") + " DB2HADR稼働状況表示処理が失敗しました。" Write-Output $WRITE_LOG >> $LOG_FILE $ERROR_FLG = 1 } }
Zuishin

2021/10/16 14:00

読んでませんが、それで「うまくいく」なら合っているのでは? 「うまくいかない」なら、どうなることを期待していて、実際はどうなるのかを書いてください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問