コンピュータがシャットダウンしたためにスクリプトが失敗した場合、またはスクリプトは正常に動作していると認識しているのに実際には動作していない場合、失敗アラートをトリガーするにはどうすればよいでしょうか。

コンピュータがシャットダウンしたためにスクリプトが失敗した場合、またはスクリプトは正常に動作していると認識しているのに実際には動作していない場合、失敗アラートをトリガーするにはどうすればよいでしょうか。

私は現在、PowerShell とタスク スケジューラを使用して、現在勤務している会社のタスクを自動化しています。このスクリプトはリストを更新し、理想的には 10 分ごとに実行されます。この定期的なスクリプトを実行するために使用するコンピューターは、少し不安定で、ランダムにシャットダウンすることがあります。スクリプトを実行しているコンピューターがオフラインの場合にアラートを受け取る方法を探しています。

私が考えている主な方法は、プログラムが実行されるたびに通知を設定し、2 番目のスクリプトで通知をチェックすることです。スクリプトが実行されなかったことを示す通知がない場合は、アラートが送信されます。私は、回答の途中までたどり着いた回答を見つけましたが、マシンがシャットダウンした場合は機能しないと思います。

Windows タスク スケジューラが失敗した場合に警告を出すようにする

この質問にご協力いただきありがとうございます。

答え1

他のコメントに同意します。障害を検出するには、他のコードを実行しているマシンに対して接続テストなどを実行する 2 台目のマシンが必要です。他のマシンから ping 応答が返ってこなかった場合に電子メールを送信するサンプルの PowerShell スクリプトを次に示します。次のコードは、0office365 メール/Exchange Online を使用していることを前提としていますが、使用するものに合わせて変更できます。

$testComputer = ping 1.1.1.1 -n 1 | select-string "Sent"  #replace the 1.1.1.1 with your server that fails

if($testComputer -match 'Sent = 1')
{
    write-host("Connection to computer running scheduled task is good.")
}
else
{
    write-host("Connection to computer running scheduled task has failed. Check to see if it is offline.")
    $computerParamsFailed = "Connection to computer running scheduled task has failed. Check to see if it is offline." 

    $username="[email protected]"  #replace with email
    $password=ConvertTo-SecureString "PASSWORDHERE"-AsPlainText -Force  #replace what is in quotes with your email password
    $mycredentials = New-Object System.Management.Automation.PSCredential ($username, $password)

    Send-MailMessage -To [email protected] -subject "Computer has gone offline." -body $computerParamsFailed -UseSsl -Port 587 -SmtpServer smtp.office365.com -From $username -Credential $mycredentials
    #change "to" email value 
}

これは、別のマシンで 10 分ごとに実行するように設定できます。接続が検出された場合は何も実行されません。応答がない場合は、電子メールが送信されます。

答え2

Worthwelle さんの意見に賛成です。スクリプトが実行されているマシンの状態を監視する別のマシンが必要になります。この場合、最初のマシンを監視するのに十分な信頼性のあるマシンがあれば、代わりにそのマシンでスクリプトを実行したほうがよいでしょう。最善の解決策は、スクリプトを実行しているマシンがクラッシュする原因となっている問題を修正するか、マシンを交換することです。

関連情報