【问题标题】:This command cannot be run due to the error: Access is denied由于错误无法运行此命令:访问被拒绝
【发布时间】:2021-01-07 08:09:40
【问题描述】:

我有一个在 windows server 2019 和 Zabbix 上运行的应用程序来监控该进程。如果应用程序崩溃但不工作,我有一个 Zabbix 运行的 powershell 脚本我收到错误 “此命令无法运行,因为错误:访问被拒绝。”

我的脚本需要发送一个数字并按 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}")

有人遇到过类似的情况吗?

【问题讨论】:

    标签: powershell zabbix


    【解决方案1】:

    更多信息会有所帮助。该脚本是由计划任务触发的吗? 我将尝试按如下方式进行调试:

    将您的脚本分成两部分。

    1. 第 1 部分:启动流程
    2. 第 2 部分:测试 SendKeys() 是否有效

    单独测试每个部分。

    我的猜测是您运行脚本的用户上下文没有足够的权限来启动该进程。也许它无法访问路径? 我想说,您没有权限发送密钥的可能性很低。

    【讨论】:

    • "由定时任务触发" 不,是zabbix agente看到down时触发的。
    • 在我的 Zabbix 服务器上,我有一个操作来查看进程是否每 10 分钟运行一次,如果它运行失败:powershell.exe -Command "&'C:\my_script.ps1'"
    • 是的,您的 Zabbix 服务的上下文对您的脚本路径没有权限,或者不允许运行脚本。作为测试,将该用户\服务帐户添加到本地管理员组,看看它是否可以这样工作。
    • 我的zabbix代理服务以管理员账户登录,发现服务在后台运行但没有打开APP
    【解决方案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 或通过任务调度程序运行是完全不同的

    【讨论】:

    • 如果计划任务在不同的用户名下运行,该窗口将不会显示。
    • 我以相同的用户和高权限运行我必须使用用户名和密码保存任务
    • 您是否在任务计划程序中选择了“与桌面交互”?
    • 我没有那个选项
    猜你喜欢
    • 2015-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-16
    • 1970-01-01
    • 1970-01-01
    • 2023-03-27
    • 2021-09-16
    相关资源
    最近更新 更多