質問: スクリプト開発初心者です。 スクリプト内の処理で、マウントに失敗した際の エラーを、イベントログへ出力しようと思い、 try,catchのtry内にマウントの処理、net use g: \xxx.xxx.xxx.xxx\マウントポイント、 catchに失敗した際、イベントログへ出力するための Write-EventLog -LogName Application -Source Application -EventId 1001 -EntryType Error -Message "マウント失敗"を書き、確認のために例外を発生させ、実行したところ、 catchに入らずエラーが表示されます。 どの部分のコードが間違えているのでしょうか。 そもそもpowershellでのマウントのコマンドは これでいいのでしょうか。 回答、よろしくお願い致します。
回答: catchに入らないということは例外は発生していないと思います。 コマンドの失敗は通常例外を起こさないで終了コードを返しますので単なるif文で良いと思います。 バッチで言う`%ERRORLEVEL%`はPowerShellでは`$lastexitcode`変数です。 ``` net use g: \\ネット共有名 #コマンドの実行 if ($lastexitcode -ne 0) { # 終了コードが0でないことは失敗を意味する。 Write-Output '失敗' #ここでイベントログへの書き込みのコマンドを書く } ``` PowerShell でも NET USE コマンドはそのまま利用できます。 マウント名はネットから参照できる`\\`で始まる名前です。 まずはマウントできるかどうかはスクリプトでなくダイレクトに試してみましょう。 何をどうしているかわかりにくいので この部分のスクリプト全体を載せましょう(質問を編集します)。 勘違いしてたらすみません、参考になればいいと思います。