ansible.windows.win_command module – Executes a command on a remote Windows node
Note
This module is part of the ansible.windows collection (version 2.5.0).
It is not included in ansible-core
.
To check whether it is installed, run ansible-galaxy collection list
.
To install it, use: ansible-galaxy collection install ansible.windows
.
To use it in a playbook, specify: ansible.windows.win_command
.
Synopsis
The
win_command
module takes the command name followed by a list of space-delimited arguments.The given command will be executed on all selected nodes. It will not be processed through the shell, so variables like
$env:HOME
and operations like"<"
,">"
,"|"
, and";"
will not work (use the ansible.windows.win_shell module if you need these features).For non-Windows targets, use the ansible.builtin.command module instead.
Parameters
Parameter |
Comments |
---|---|
The This is mutually exclusive with the There is no parameter actually named ‘_raw_params’. See the examples! |
|
A list that contains the executable and arguments to run. The module will attempt to quote the arguments specified based on the Win32 C command-line argument rules. Not all applications use the same quoting rules so the escaping may not work, for those scenarios use |
|
Set the specified path as the current working directory before executing a command. |
|
The command and arguments to run. This is mutually exclusive with the |
|
A path or path filter pattern; when the referenced path exists on the target host, the task will be skipped. |
|
This option overrides the encoding of stdout/stderr output. You can use this option when you need to run a command which ignore the console’s codepage. You should only need to use this option in very rare circumstances. This value can be any valid encoding |
|
A path or path filter pattern; when the referenced path does not exist on the target host, the task will be skipped. |
|
Set the stdin of the command directly to the specified value. |
Notes
Note
If you want to run a command through a shell (say you are using
<
,>
,|
, etc), you actually want the ansible.windows.win_shell module instead. The ansible.windows.win_command module is much more secure as it’s not affected by the user’s environment.creates
,removes
, andchdir
can be specified after the command. For instance, if you only want to run a command if a certain file does not exist, use this.Do not try to use the older style free form format and the newer style cmd/argv format. See the examples for how both of these formats are defined.
See Also
See also
- ansible.builtin.command
The official documentation on the ansible.builtin.command module.
- community.windows.psexec
The official documentation on the community.windows.psexec module.
- ansible.builtin.raw
The official documentation on the ansible.builtin.raw module.
- community.windows.win_psexec
The official documentation on the community.windows.win_psexec module.
- ansible.windows.win_shell
Execute shell commands on target hosts.
Examples
# Older style using the free-form and args format. The command is on the same
# line as the module and 'args' is used to define the options for win_command.
- name: Save the result of 'whoami' in 'whoami_out'
ansible.windows.win_command: whoami
register: whoami_out
- name: Run command that only runs if folder exists and runs from a specific folder
ansible.windows.win_command: wbadmin -backupTarget:C:\backup\
args:
chdir: C:\somedir\
creates: C:\backup\
- name: Run an executable and send data to the stdin for the executable
ansible.windows.win_command: powershell.exe -
args:
stdin: Write-Host test
# Newer style using module options. The command and other arguments are
# defined as module options and are indended like another other module.
- name: Run the 'whoami' executable with the '/all' argument
ansible.windows.win_command:
cmd: whoami.exe /all
- name: Run executable in 'C:\Program Files' with a custom chdir
ansible.windows.win_command:
# When using cmd, the arguments need to be quoted manually
cmd: '"C:\Program Files\My Application\run.exe" "argument 1" -force'
chdir: C:\Windows\TEMP
- name: Run executable using argv and have win_command escape the spaces as needed
ansible.windows.win_command:
# When using argv, each entry is quoted in the module
argv:
- C:\Program Files\My Application\run.exe
- argument 1
- -force
- name: Run an executable that outputs text with big5 encoding
ansible.windows.win_command: C:\someprog.exe
args:
output_encoding_override: big5
Return Values
Common return values are documented here, the following are the fields unique to this module:
Key |
Description |
---|---|
The command executed by the task Returned: always Sample: |
|
The command execution delta time Returned: always Sample: |
|
The command execution end time Returned: always Sample: |
|
changed Returned: always Sample: |
|
The command return code (0 means success) Returned: always Sample: |
|
The command execution start time Returned: always Sample: |
|
The command standard error Returned: always Sample: |
|
The command standard error split in lines Returned: always Sample: |
|
The command standard output Returned: always Sample: |
|
The command standard output split in lines Returned: always Sample: |