Эта команда не может быть запущена из-за ошибки: доступ запрещен

#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. Часть 1. Запустите процесс
  2. Часть 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. У меня нет такой опции