Я использую PowerShell для ежечасной проверки, чтобы проверить, работает ли процесс «ASA». Если нет, перезапустите его. Используя фрагмент кода, найденный из ответа jon Z в приведенной ниже ссылке, он отлично работает. Может быть, слишком хорошо? Powershell - if a process is not running, start itПроверка процесса PowerShell запускает слишком много процессов
У меня есть запланированная задача, которая запускает этот скрипт каждый час в течение 24 часов. Проблема Я замечаю, что у меня есть куча ASA процессов открытой, когда мне нужно только & хочет 1.
Вот мой сценарий. У меня также есть двойная проверка скрипта, чтобы отправить мне электронное письмо, если оно обнаружило, что процесс не запущен, и отправить мне по электронной почте результаты.
# 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 [email protected] -server my.smtp.com -f [email protected] -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 [email protected] -server my.smtp.com -f [email protected] -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, это правильно.
Так что я застрял, почему он начинает несколько экземпляров.
Работал как шарм. Единственное, что я вижу сейчас, - это процесс, выполняемый как «NETWORK SERVICE». Как я могу запустить процесс в качестве учетной записи пользователя, поэтому, когда я вхожу в систему, я могу видеть и использовать программу? – Pat
Вы должны изменить учетные данные в планировщике задач с помощью вашего пользователя & pw –
Я сделал это до этого вопроса (как вы можете видеть на моих скриншотах выше, в нем было много их как мое имя пользователя). Когда я выполнил ваше исправление и перезагрузил свою машину, он запустил скрипт как NETWORK SERVICE. Любые другие мысли? Может ли PowerShell вызывать выражение как пользователя? – Pat