win_command not able to execute command file on win 2008

544 views
Skip to first unread message

akshar barot

unread,
Sep 6, 2017, 3:28:50 PM9/6/17
to Ansible Project
Hi All,

I have configured ansible to run some cmd script on windows machine. it is working fine in windows 7,8,2010. 

But, it is now working for only windows 2008.

It is providing empty output. 
=============================
TASK [debug] *********************************************************************************
task path: /home/ansible/ansible_test/hotfix.yml:16
ok: [10.50.89.34] => {
    "script_file": {
        "changed": true,
        "cmd": "C:\\Users\\administrator\\Desktop\\test_hotfix3.cmd",
        "delta": "0:00:00.031199",
        "end": "2017-09-06 07:22:53.958016",
        "rc": 0,
        "start": "2017-09-06 07:22:53.926816",
        "stderr": "",
        "stderr_lines": [],
        "stdout": "",
        "stdout_lines": []
    }
}
=============================================

Here is yaml file,


        - name: Copy a single file
          win_copy:
            src: /root/test_hotfix3.cmd
            dest: c:\Users\administrator\Desktop

        - win_command: C:\Users\administrator\Desktop\test_hotfix3.cmd
          register: script_file

========================================

not sure, why it is not running in 2008 only.

any clue???

Thank you in advance, 

J Hawkesworth

unread,
Sep 7, 2017, 2:59:14 PM9/7/17
to Ansible Project
It sounds like you have hit this issue: https://github.com/ansible/ansible/issues/21915

I guess you could try updating the powershell / windows management framework version to see if that helps, or perhaps upgrade the machine to S2008R2?

All the best,

Jon

Jordan Borean

unread,
Sep 7, 2017, 7:30:30 PM9/7/17
to Ansible Project
Apart from updating the Server OS to 2008 R2 the only way I know how to get the output of a batch script is to use win_shell while changing the active code page. An example of running a valid and failing command can be found

- name: create test batch file
  win_copy:
    dest: C:\temp\test.bat
    content: |
      @echo OFF
      echo Hello World
 
- name: create bad batch file
  win_copy:
    dest: C:\temp\bad.bat
    content: |
      @echo OFF
      echo stdout
      echo stderr 1>&2
      exit 1
 
- name: run test batch file
  win_shell: chcp 437 | Out-Null; C:\temp\test.bat
 
- name: run bad test batch file
  win_shell: chcp 437 | Out-Null; C:\temp\bad.bat

The output looks like the below 

PLAYBOOK: adhoc.yml ******************************************************************************************************************************************************************************************************************************
1 plays in adhoc.yml
 
PLAY [adhoc stuff] *******************************************************************************************************************************************************************************************************************************
META: ran handlers
 
TASK [create test batch file] ********************************************************************************************************************************************************************************************************************
task path: /Users/jborean/dev/module-tester/adhoc.yml:7
Friday 08 September 2017  09:20:59 +1000 (0:00:00.045)       0:00:00.045 ****** 
ok: [Server2008] => {"changed": false, "checksum": "994da01848ab043e362343ac6b95e0169215e510", "dest": "C:\\temp\\test.bat", "failed": false, "operation": "file_copy", "original_basename": "tmpivwi2x5e", "size": 27, "src": null }
 
TASK [create bad batch file] *********************************************************************************************************************************************************************************************************************
task path: /Users/jborean/dev/module-tester/adhoc.yml:14
Friday 08 September 2017  09:21:00 +1000 (0:00:01.582)       0:00:01.628 ****** 
ok: [Server2008] => {"changed": false, "checksum": "a91d421034b3a977a02d1a229652fb7a542c16e5", "dest": "C:\\temp\\bad.bat", "failed": false, "operation": "file_copy", "original_basename": "tmp_5gq6hzc", "size": 27, "src": null}
 
TASK [run test batch file] ***********************************************************************************************************************************************************************************************************************
task path: /Users/jborean/dev/module-tester/adhoc.yml:22
Friday 08 September 2017  09:21:02 +1000 (0:00:01.796)       0:00:03.424 ****** 
changed: [Server2008] => {"changed": true, "cmd": "chcp 437| Out-Null; C:\\temp\\test.bat", "delta": "0:00:00.528651", "end": "2017-09-07 11:21:03.384382", "failed": false, "rc": 0, "start": "2017-09-07 11:21:02.855730", "stderr": "", 
"stderr_lines": [], "stdout": "Hello World\r\n", "stdout_lines": ["Hello World"]}
 
TASK [run bad test batch file] *******************************************************************************************************************************************************************************************************************
task path: /Users/jborean/dev/module-tester/adhoc.yml:25
Friday 08 September 2017  09:21:04 +1000 (0:00:02.169)       0:00:05.594 ****** 
fatal: [Server2008]: FAILED! => {"changed": true, "cmd": "chcp 437| Out-Null; C:\\temp\\bad.bat", "delta": "0:00:00.372014", "end": "2017-09-07 11:21:06.008062", "failed": true, "msg": "non-zero return code", "rc": 1, "start": "2017-09-07 11:21:05.636047", "stderr": "stderr \r\n", "stderr_lines": ["stderr "], "stdout": "Fail\r\n", "stdout_lines": ["Fail"]}
 
PLAY RECAP ***************************************************************************************************************************************************************************************************************************************
Server2008                 : ok=3    changed=1    unreachable=0    failed=1   
Friday 08 September 2017  09:21:06 +1000 (0:00:02.098)       0:00:07.692 ****** 
 
=============================================================================== 
run test batch file ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 2.17s
/Users/jborean/dev/module-tester/adhoc.yml:22 ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
run bad test batch file ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 2.10s
/Users/jborean/dev/module-tester/adhoc.yml:25 ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
create bad batch file --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 1.80s
/Users/jborean/dev/module-tester/adhoc.yml:14 ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
create test batch file -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 1.58s
/Users/jborean/dev/module-tester/adhoc.yml:7 ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Playbook run took 0 days, 0 hours, 0 minutes, 7 seconds

In the example you can see that it runs both a good and bad batch file and also get's the stdout and stderr streams. The reason why this works is that win_shell creates a new powershell process and before we run the batch script we change the codepage to 437 which is the US codepage so that we can retrieve the output.

akshar barot

unread,
Sep 25, 2017, 10:19:15 AM9/25/17
to Ansible Project
Sorry for delay in reply.

It seems resolved after Upgrade WinRM 3.0. 
Reply all
Reply to author
Forward
0 new messages