可以在Ansible中使用AutoHotKey吗?

问题描述

我目前正在使用Ansible在Windows机器上安装其他服务,但是我需要在属性窗口中编辑一些参数。我尝试使用下面的代码运行名为CCM的AHK脚本,但是它不能按预期运行(不更改任何参数)。

  - name: Run CCM script to configure server
    win_psexec:
      command: 'C:\temp\CCM.exe'
      interactive: yes
      system: yes

我想知道是否可以在Ansible中使用AHK?

解决方法

是的,可以在Ansible中运行AutoHotKey,尽管只有在没有其他脚本选项可用时才应该这样做

AHK必须在控制台GUI会话中运行,才能与Windows桌面进行交互。这可以通过名为psexec的扩展程序来完成,该程序是Windows Sysinternals实用程序包的一部分。您可以从Microsoft免费下载。

https://docs.microsoft.com/en-us/sysinternals/downloads/

首先找到会话ID:

for /f "tokens=3" %i in ('qwinsta console ^| find "console"') do set GUI_SESSION_ID=%i

然后使用psexec启动GUI控制台会话,然后在其中运行AutoHotkey:

psexec -i %GUI_SESSION_ID% autohotkey myscript.ahk

然后您可以像往常一样运行AHK脚本。