「ASA」プロセスが実行されているかどうかを確認するために、PowerShell を使用して 1 時間ごとのチェックを実行しています。そうでない場合は、再起動します。以下のリンクの jon Z の回答から見つかったコード スニペットを使用すると、うまく機能しています。ちょっと上手すぎるかも?Powershell - プロセスが実行されていない場合は開始します
このスクリプトを 1 時間ごとに 24 時間実行するスケジュールされたタスクがあります。私が気づいている問題は、1 つしか必要としないときに、たくさんの ASA プロセスを開いていることです。
これが私のスクリプトです。また、プロセスが実行されていないことが判明した場合はスクリプトをダブルチェックして、メールを送信し、結果をメールで送信します。
# Set some variables
$computer = $env:COMPUTERNAME
$prog = "C:\Program Files\Avaya\Site Administration\bin\ASA.exe"
$procName = "ASA"
$running = Get-Process $procName -ErrorAction SilentlyContinue
$start = ([wmiclass]"win32_process").Create($prog) # the process is created on this line
# Begin process check
if($running -eq $null) { # evaluating if the program is running
$start # Start the program
sleep 5
# Re-check the process to see if it is running
$nowRunning = Get-Process $procName -ErrorAction SilentlyContinue
# Email us the results as to whether it started or was not able to restart.
if ($nowRunning -eq $null) {
blat.exe - -priority 1 -to john@doe.com -server my.smtp.com -f john@doe.com -subject "ASA cannot be restarted on $computer!" -body "The latest powershell check showed that ASA was not running on $computer! ||PowerShell was not able to restart ASA. Please investigate."
} else {
blat.exe - -priority 1 -to john@doe.com -server my.smtp.com -f john@doe.com -subject "ASA was restarted on $computer!" -body "The latest powershell check showed that ASA was not running on $computer! ||PowerShell was able to automatically restart ASA."
}
}
私の最初の仮定は、プロセス名が間違っていて、タスク マネージャーで定義されているプログラム名である必要があるということでした。ただし、この出力によると、ASA を使用するだけで正しいです。
そのため、複数のインスタンスを開始する理由がわかりません。