Windows module error with ansible.legacy.setup PowerShell -NoProfile -NonInteractive?

Hello,

I had my playbook working perfectly until I made what I thought was a small change! I’m running the latest version of Ansible, version 2.10.4.

Ansible keeps telling me there is a problem with line 1 but I’m having a hard time interpreting what the error means. Almost seems like VS Code did something?

Error:

fatal: [server1.edu]: FAILED! => {“ansible_facts”: {}, “changed”: false, “failed_modules”: {“ansible.legacy.setup”: {“failed”: true, “module_stderr”: “At line:1 char:26\r\n+ chcp.com 65001 >nul 2>&1 && PowerShell -NoProfile -NonInteractive -Ex …\r\n+ ~~\r\nThe token ‘&&’ is not a valid statement separator in this version.\r\n + CategoryInfo : ParserError: (:slight_smile: [], ParentContainsErrorRecordException\r\n + FullyQualifiedErrorId : InvalidEndOfLine\r\n \r\n”, “module_stdout”: “”, “msg”: “MODULE FAILURE\nSee stdout/stderr for the exact error”, “rc”: 1}}, “msg”: “The following modules failed to execute: ansible.legacy.setup\n”}

fatal: [server2.edu]: FAILED! => {“ansible_facts”: {}, “changed”: false, “failed_modules”: {“ansible.legacy.setup”: {“failed”: true, “module_stderr”: “At line:1 char:26\r\n+ chcp.com 65001 >nul 2>&1 && PowerShell -NoProfile -NonInteractive -Ex …\r\n+ ~~\r\nThe token ‘&&’ is not a valid statement separator in this version.\r\n + CategoryInfo : ParserError: (:slight_smile: [], ParentContainsErrorRecordException\r\n + FullyQualifiedErrorId : InvalidEndOfLine\r\n \r\n”, “module_stdout”: “”, “msg”: “MODULE FAILURE\nSee stdout/stderr for the exact error”, “rc”: 1}}, “msg”: “The following modules failed to execute: ansible.legacy.setup\n”}

My playbook:

Hello,

I had my playbook working perfectly until I made what I thought was a small
change!

It would probably help if you told us exactly what that change was - show us
the old version and the new one (or, at least, the bits that are different).

Ansible keeps telling me there is a problem with line 1 but I'm having a
hard time interpreting what the error means. Almost seems like VS Code did
something?

Error:

"At line:1 char:26\r\n+ chcp.com 65001 >nul 2>&1 && PowerShell -NoProfile -
NonInteractive -Ex ...\r\n+ ~~\r\nThe token '&&' is not a valid statement
separator in this version.\r\n"

That to me looks more like a complaint about the powershell script you're
using to call ansible than it does about the ansible playbook itself (however
on the other hand I know nothing whatever about powershell so I could be
completely wrong). I simply don't see an instance of '&&' in your playbook,
so the error can't be talking about that.

Antony.

Sorry, you’re right, I should have posted what I changed.

I added these lines from the example here. https://docs.ansible.com/ansible/latest/user_guide/windows_setup.html#installing-win32-openssh

  • name: set the default shell to PowerShell
    win_regedit:
    path: HKLM:\SOFTWARE\OpenSSH
    name: DefaultShell
    data: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
    type: string
    state: present

It worked fine when I ran it after the addition, but the subsequent runs of my playbook turned up the error. I’ve even tried removing the “set the default shell to Powershell” snippet and it’s still turning up this vexing error.

So you’re right, it’s like this Powershell example did something that is breaking subsequent runs.

Why do you put that in just out of interest

So that when I ssh into our Windows systems, my shell is using Powershell instead of the standard cmd.

The supported process is through winrm.

I’m aware that using SSH with Windows is experimental. The connection isn’t the issue, though.

If your default shell is PowerShell you need to tell Ansible that with ‘ansible_shell_type=powershell’. Right now it’s using cmd hence the cmd syntax which isn’t valid in PowerShell.

Ah, that makes more sense.

Thank you so much!!!

As it turns out I had ansible_shell_type=cmd in my ansible host’s file under the windows server section. Thanks again for the help!