使用"win_command: mklink softlinkfile destfile"时找不到mklink.exe\"
When using "win_command: mklink softlinkfile destfile" can not locate mklink.exe\"
我正在使用 ansible 来管理云上的多个 windows 主机,我需要创建一个日志文件并将其 link 到另一个文件,所以我使用以下剧本
- name: init the directory structure of windows
hosts: '{{windows_hosts}}'
tasks:
- name: create log file and link it to log directory
win_command: mklink log D:\prod\log
args:
chdir: D:\prod\project
当运行这个playbook时,可以成功找到hosts,但是我得到如下报错
> TASK [Gathering Facts]
> ********* ok: [111.111.2.40]
>
> TASK [create log file and link it to log directory]
> ********* fatal: [111.231.76.40]: FAILED! => {"changed": false, "cmd": "mklink log
> D:\prod\log", "msg": "Exception calling \"SearchPath\" with \"1\"
> argument(s): \"Could not locate the following executable
> mklink.exe\"", "rc": 2}
我在远程主机的同一目录下试过这个命令,可以成功执行。我不知道该怎么办......
执行以下操作:
---
- name: Run Windows Command
hosts: windows
gather_facts: False
tasks:
- name: win command
win_shell: cmd /k mklink log D:\prod\log
args:
chdir: D:\prod\project
win_command 直接用于 运行ning 可执行文件。因此,用户的环境没有应用,你也没有 运行 在 dos 框或 powershell 中 window
所以 'mklink' 实际上不是可执行文件 - 它是 cmd.exe 程序的内置功能。因此,要通过 win_command 运行 mklink,您必须 运行 cmd.exe 程序并向其传递一个参数以告诉它执行 'mklink' 的操作,例如这个:
win_command: cmd.exe /k mklink log D:\prod\log
我正在使用 ansible 来管理云上的多个 windows 主机,我需要创建一个日志文件并将其 link 到另一个文件,所以我使用以下剧本
- name: init the directory structure of windows
hosts: '{{windows_hosts}}'
tasks:
- name: create log file and link it to log directory
win_command: mklink log D:\prod\log
args:
chdir: D:\prod\project
当运行这个playbook时,可以成功找到hosts,但是我得到如下报错
> TASK [Gathering Facts]
> ********* ok: [111.111.2.40]
>
> TASK [create log file and link it to log directory]
> ********* fatal: [111.231.76.40]: FAILED! => {"changed": false, "cmd": "mklink log
> D:\prod\log", "msg": "Exception calling \"SearchPath\" with \"1\"
> argument(s): \"Could not locate the following executable
> mklink.exe\"", "rc": 2}
我在远程主机的同一目录下试过这个命令,可以成功执行。我不知道该怎么办......
执行以下操作:
---
- name: Run Windows Command
hosts: windows
gather_facts: False
tasks:
- name: win command
win_shell: cmd /k mklink log D:\prod\log
args:
chdir: D:\prod\project
win_command 直接用于 运行ning 可执行文件。因此,用户的环境没有应用,你也没有 运行 在 dos 框或 powershell 中 window
所以 'mklink' 实际上不是可执行文件 - 它是 cmd.exe 程序的内置功能。因此,要通过 win_command 运行 mklink,您必须 运行 cmd.exe 程序并向其传递一个参数以告诉它执行 'mklink' 的操作,例如这个:
win_command: cmd.exe /k mklink log D:\prod\log