Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

win_powershell output broken when using Powershell 7 #571

Closed
UntiIted opened this issue Nov 28, 2023 · 3 comments · Fixed by #572
Closed

win_powershell output broken when using Powershell 7 #571

UntiIted opened this issue Nov 28, 2023 · 3 comments · Fixed by #572

Comments

@UntiIted
Copy link

SUMMARY

Running the win_powershell task with executable: pwsh.exe specified results in broken output, with "Failed to compile C# code" among the error output.

ISSUE TYPE
  • Bug Report
COMPONENT NAME

win_powershell

ANSIBLE VERSION
ansible [core 2.16.0]
  config file = None
  configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/local/lib/python3.12/dist-packages/ansible
  ansible collection location = /root/.ansible/collections:/usr/share/ansible/collections
  executable location = /usr/local/bin/ansible
  python version = 3.12.0 (main, Oct 21 2023, 17:44:38) [GCC 9.4.0] (/usr/bin/python3.12)
  jinja version = 3.1.2
  libyaml = False
COLLECTION VERSION
Collection      Version
--------------- -------
ansible.windows 2.2.0
CONFIGURATION
CONFIG_FILE() = None
OS / ENVIRONMENT

Host is WSL running Ubuntu 20.04.6 LTS
Target is Windows Server 2019 Datacenter
Issues only happen with Powershell 7, not 5

STEPS TO REPRODUCE

A simple powershell task is enough as long as it runs Powershell 7

- name: write output
  ansible.windows.win_powershell:
    script: |
      Write-Output $PSVersionTable
    executable: pwsh.exe
EXPECTED RESULTS

Task runs and returns successfully with no visible issues.

ACTUAL RESULTS

Task runs and returns successfully, however the output is broken and there's a clear indication of some issue in the backend. I can run with extra verbosity but I think the normal output gives all the necessary information.
You can see the C# errors and the broken output with an unknown list inserted in it.

{
    "changed": true,
    "debug": [],
    "error": [
        {
            "category_info": {
                "activity": "",
                "category": "OperationStopped",
                "category_id": 14,
                "reason": "InvalidOperationException",
                "target_name": "",
                "target_type": ""
            },
            "error_details": null,
            "exception": {
                "help_link": null,
                "hresult": -2146233079,
                "inner_exception": null,
                "message": "Failed to compile C# code:\r\n(1,1): hidden CS8019: Unnecessary using directive.\r\nusing Microsoft.Win32.SafeHandles;\r\n^\r\nerror CS0041: Unexpected error writing debug information -- 'The version of Windows PDB writer is older than required: 'diasymreader.dll''",
                "source": null,
                "type": "System.InvalidOperationException"
            },
            "fully_qualified_error_id": "Failed to compile C# code:\r\n(1,1): hidden CS8019: Unnecessary using directive.\r\nusing Microsoft.Win32.SafeHandles;\r\n^\r\nerror CS0041: Unexpected error writing debug information -- 'The version of Windows PDB writer is older than required: 'diasymreader.dll''",
            "output": "Failed to compile C# code:\r\n(1,1): hidden CS8019: Unnecessary using directive.\r\nusing Microsoft.Win32.SafeHandles;\r\n^\r\nerror CS0041: Unexpected error writing debug information -- 'The version of Windows PDB writer is older than required: \r\n'diasymreader.dll''\r\nAt line:259 char:17\r\n+ ...             throw [InvalidOperationException]\"Failed to compile C# co ...\r\n+                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\r\n    + CategoryInfo          : OperationStopped: (:) [], InvalidOperationException\r\n    + FullyQualifiedErrorId : Failed to compile C# code:\r\n(1,1): hidden CS8019: Unnecessary using directive.\r\nusing Microsoft.Win32.SafeHandles;\r\n^\r\nerror CS0041: Unexpected error writing debug information -- 'The version of Windows PDB writer is older than required: \r\n'diasymreader.dll''\r\n \r\n",
            "pipeline_iteration_info": [],
            "script_stack_trace": "at <ScriptBlock>, <No file>: line 259\r\nat <ScriptBlock>, <No file>: line 30",
            "target_object": null
        }
    ],
    "host_err": "",
    "host_out": "",
    "information": [],
    "output": [
        {
            "Capacity": 122,
            "Length": 52,
            "MaxCapacity": 2147483647
        },
        {
            "Capacity": 122,
            "Length": 88,
            "MaxCapacity": 2147483647
        },
        {
            "Capacity": 122,
            "Length": 88,
            "MaxCapacity": 2147483647
        },
        {
            "Capacity": 122,
            "Length": 88,
            "MaxCapacity": 2147483647
        },
        {
            "Capacity": 122,
            "Length": 89,
            "MaxCapacity": 2147483647
        },
        {
            "GitCommitId": "7.4.0",
            "OS": "Microsoft Windows 10.0.17763",
            "PSCompatibleVersions": [
                "1.0",
                "2.0",
                "3.0",
                "4.0",
                "5.0",
                "5.1",
                "6.0",
                "7.0"
            ],
            "PSEdition": "Core",
            "PSRemotingProtocolVersion": {
                "Build": -1,
                "Major": 2,
                "MajorRevision": -1,
                "Minor": 3,
                "MinorRevision": -1,
                "Revision": -1
            },
            "PSVersion": {
                "BuildLabel": null,
                "Major": 7,
                "Minor": 4,
                "Patch": 0,
                "PreReleaseLabel": null
            },
            "Platform": "Win32NT",
            "SerializationVersion": {
                "Build": 0,
                "Major": 1,
                "MajorRevision": 0,
                "Minor": 1,
                "MinorRevision": 1,
                "Revision": 1
            },
            "WSManStackVersion": {
                "Build": -1,
                "Major": 3,
                "MajorRevision": -1,
                "Minor": 0,
                "MinorRevision": -1,
                "Revision": -1
            }
        }
    ],
    "result": {},
    "verbose": [],
    "warning": []
}
@jborean93
Copy link
Collaborator

Thanks, I wonder if the issue is due to a change in pwsh 7.4 which uses dotnet 8. Will have to look into the Add-Type error and see how we can fix this.

@jborean93
Copy link
Collaborator

I am weirdly not able to replicate the error but I believe #572 will fix this issue for you. I'm not sure if potentially there are some env vars that might be cause a problem here or whether a custom compiler is higher in the PATH causing these errors to be emitted.

@UntiIted
Copy link
Author

UntiIted commented Dec 1, 2023

In that case I'll wait until I can test with a fixed version and report afterwards

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants