#powershell #zabbix
#powershell #zabbix
Вопрос:
У меня есть приложение, запущенное на Windows server 2019 и Zabbix для мониторинга этого процесса. У меня есть сценарий powershell, который Zabbix запускает, если приложение завершает работу, но не работает, я получаю сообщение об ошибке «Эта команда не может быть запущена из-за ошибки: доступ запрещен».
Моему скрипту необходимо отправить номер и нажать ENTER для запуска приложения.
Start-Process "c:my_app.exe"
Start-Sleep -s 1
$obj = new-object -ComObject WScript.Shell
$obj.SendKeys("3")
Start-Sleep -s 1
$obj.SendKeys("{ENTER}")
У кого-нибудь есть подобная ситуация, которая работает?
Ответ №1:
Дополнительная информация поможет tbh. Этот сценарий запускается запланированной задачей? Я бы попытался отладить это следующим образом:
Разработайте свой сценарий на 2 части.
- Часть 1. Запустите процесс
- Часть 2. Проверьте, работают ли SendKeys()
Протестируйте каждую часть по отдельности.
Я предполагаю, что пользовательский контекст, в котором вы запускаете свой скрипт, не имеет достаточных разрешений для запуска этого процесса. Может быть, у него нет доступа к пути? Я бы сказал, что вероятность того, что у вас нет разрешения на отправку ключа, невелика.
Комментарии:
1. «запускается запланированной задачей» Нет, запускается zabbix-агентом, когда он видит, что не работает.
2. На моем сервере Zabbix у меня есть действие, чтобы проверить, выполняется ли процесс каждые 10 минут, если он не выполняется: powershell.exe -Команда «amp;’C:my_script.ps1 «»
3. Да, итак, контекст вашей службы Zabbix не имеет разрешения на ваш путь к сценарию или не разрешен для запуска сценариев. Просто в качестве теста добавьте эту учетную запись user service в локальную admingroup и посмотрите, так ли это работает.
4. моя служба агента zabbix вошла в систему как учетная запись администратора, и я обнаружил, что служба работает в фоновом режиме, но не открывает приложение
Ответ №2:
Даже если я запускаю скрипт через планировщик задач, мы запускаем процесс, но в фоновом режиме окно не открывается.
сценарий, подобный этому (my_scrip.ps1)
start-process "notepad"
start-sleep 3
$obj = new-object -ComObject WScript.Shell
$obj.SendKeys("3")
start-sleep 3
$obj.SendKeys("{ENTER}")
запуск в powershell или через планировщик задач — это полная разница
Комментарии:
1. Окно не будет отображаться, если задача расписания выполняется под другим именем пользователя.
2. Я работаю с тем же пользователем и с высокими привилегиями, я должен сохранить задачу с именем пользователя и паролем
3. Вы выбрали «Взаимодействовать с рабочим столом» в планировщике задач?
4. У меня нет такой опции