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).
You might already have this collection installed if you are using the ansible
package.
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
Execute commands on targets.
- community.windows.psexec
Runs commands on a remote Windows host based on the PsExec model.
- ansible.builtin.raw
Executes a low-down and dirty command.
- community.windows.win_psexec
Runs commands (remotely) as another (privileged) user.
- 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
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: |