ansible-collections/ansible.windows

win_service: encoding error with certain return values

leegarrett opened this issue · 8 comments

SUMMARY

Certain return values of win_service seem to have the wrong encoding. Below is a working example:

ISSUE TYPE
  • Bug Report
COMPONENT NAME

win_service

ANSIBLE VERSION
ansible [core 2.14.8]
  config file = /home/randall/Coding/gits-playbook/ansible.cfg
  configured module search path = ['/home/randall/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python3/dist-packages/ansible
  ansible collection location = /home/randall/.ansible/collections:/usr/share/ansible/collections
  executable location = /usr/bin/ansible
  python version = 3.11.2 (main, Mar 13 2023, 12:18:29) [GCC 12.2.0] (/usr/bin/python3)
  jinja version = 3.1.2
  libyaml = True
COLLECTION VERSION
$ ansible-galaxy collection list ansible.windows

# /usr/lib/python3/dist-packages/ansible_collections
Collection      Version
--------------- -------
ansible.windows 1.14.0 

# /home/randall/.ansible/collections/ansible_collections
Collection      Version
--------------- -------
ansible.windows 2.0.0  

CONFIGURATION
$ ansible-config dump --only-changed
ANSIBLE_FORCE_COLOR(/home/randall/Coding/gits-playbook/ansible.cfg) = True
ANSIBLE_NOCOWS(/home/randall/Coding/gits-playbook/ansible.cfg) = True
CACHE_PLUGIN(/home/randall/Coding/gits-playbook/ansible.cfg) = jsonfile
CACHE_PLUGIN_CONNECTION(/home/randall/Coding/gits-playbook/ansible.cfg) = fact_cache
CACHE_PLUGIN_TIMEOUT(/home/randall/Coding/gits-playbook/ansible.cfg) = 1209600
CONFIG_FILE() = /home/randall/Coding/gits-playbook/ansible.cfg
DEFAULT_BECOME_METHOD(/home/randall/Coding/gits-playbook/ansible.cfg) = su
DEFAULT_FORCE_HANDLERS(/home/randall/Coding/gits-playbook/ansible.cfg) = True
DEFAULT_FORKS(/home/randall/Coding/gits-playbook/ansible.cfg) = 100
DEFAULT_GATHERING(/home/randall/Coding/gits-playbook/ansible.cfg) = smart
DEFAULT_HASH_BEHAVIOUR(/home/randall/Coding/gits-playbook/ansible.cfg) = merge
DEFAULT_HOST_LIST(/home/randall/Coding/gits-playbook/ansible.cfg) = ['/home/randall/Coding/gits-playbook/hosts']
DEFAULT_MANAGED_STR(/home/randall/Coding/gits-playbook/ansible.cfg) = Ansible managed: Any changes will be overwritten!
DEFAULT_ROLES_PATH(/home/randall/Coding/gits-playbook/ansible.cfg) = ['/home/randall/Coding/gits-playbook/roles/apt_repos', '/home/randall/Coding/gits-playbook/roles/daemons', '/home/randall/Coding/gits-playbook/roles/databases', >
DEFAULT_STDOUT_CALLBACK(/home/randall/Coding/gits-playbook/ansible.cfg) = yaml
DEFAULT_VAULT_PASSWORD_FILE(/home/randall/Coding/gits-playbook/ansible.cfg) = /home/randall/Coding/gits-playbook/vault_pass
RETRY_FILES_ENABLED(/home/randall/Coding/gits-playbook/ansible.cfg) = False

OS / ENVIRONMENT

The workstation is running Debian bookworm, the target OS is windows 10 VM with German locale, running via libvirt, with the community.libvirt.libvirt_qemu connection plugin.

STEPS TO REPRODUCE
- hosts: win10work
  tasks:
    - win_service:
        name: Spooler
      register: foo

    - debug:
        msg: "{{ foo.description }}"

win_stat shows a similar problem, however I won't file a separate bug report for it right now.

EXPECTED RESULTS

It returns the value of "foo.description"

This is the description of the service queried from cmd.exe from within the VM:

C:\Users\work>sc qdescription Spooler
[SC] QueryServiceConfig2 ERFOLG

SERVICE_NAME: Spooler
BESCHREIBUNG:  Dieser Dienst spoolt Druckaufträge und verarbeitet Interaktionen mit dem Drucker. Wenn Sie diesen Dienst ausschalten, können Sie weder drucken noch Drucker anzeigen.
ACTUAL RESULTS

I get the following error:
[WARNING]: Failure using method (v2_runner_on_ok) in callback plugin (<ansible_collections.community.general.plugins.callback.yaml.CallbackModule object at 0x7fa0f9cb3a90>): 'utf-8' codec can't encode character '\udc81' in position 208: surrogates not allowed

verbose playbook output below:

$ ansible-playbook debug_win_service.yml --diff -vvvv
ansible-playbook [core 2.14.8]
  config file = /home/randall/Coding/gits-playbook/ansible.cfg
  configured module search path = ['/home/randall/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python3/dist-packages/ansible
  ansible collection location = /home/randall/.ansible/collections:/usr/share/ansible/collections
  executable location = /usr/bin/ansible-playbook
  python version = 3.11.2 (main, Mar 13 2023, 12:18:29) [GCC 12.2.0] (/usr/bin/python3)
  jinja version = 3.1.2
  libyaml = True
Using /home/randall/Coding/gits-playbook/ansible.cfg as config file
setting up inventory plugins
host_list declined parsing /home/randall/Coding/gits-playbook/hosts as it did not pass its verify_file() method
script declined parsing /home/randall/Coding/gits-playbook/hosts as it did not pass its verify_file() method
auto declined parsing /home/randall/Coding/gits-playbook/hosts as it did not pass its verify_file() method
Set default localhost to localhost
Parsed /home/randall/Coding/gits-playbook/hosts inventory source with ini plugin
redirecting (type: modules) ansible.builtin.win_service to ansible.windows.win_service
Loading collection ansible.windows from /home/randall/.ansible/collections/ansible_collections/ansible/windows
redirecting (type: callback) ansible.builtin.yaml to community.general.yaml
Loading collection community.general from /usr/lib/python3/dist-packages/ansible_collections/community/general
redirecting (type: callback) ansible.builtin.yaml to community.general.yaml
Loading callback plugin community.general.yaml of type stdout, v2.0 from /usr/lib/python3/dist-packages/ansible_collections/community/general/plugins/callback/yaml.py
Skipping callback 'default', as we already have a stdout callback.
Skipping callback 'minimal', as we already have a stdout callback.
Skipping callback 'oneline', as we already have a stdout callback.

PLAYBOOK: debug_win_service.yml *******************************************************************************************************************************************************************************************************
Positional arguments: debug_win_service.yml
verbosity: 4
connection: smart
timeout: 10
force_handlers: True
become_method: su
tags: ('all',)
diff: True
inventory: ('/home/randall/Coding/gits-playbook/hosts',)
forks: 100
1 plays in debug_win_service.yml

PLAY [win10work] **********************************************************************************************************************************************************************************************************************
Trying secret FileVaultSecret(filename='/home/randall/Coding/gits-playbook/vault_pass') for vault_id=default

TASK [win_service] ********************************************************************************************************************************************************************************************************************
task path: /home/randall/Coding/gits-playbook/debug_win_service.yml:5
Loading collection community.libvirt from /usr/lib/python3/dist-packages/ansible_collections/community/libvirt
redirecting (type: modules) ansible.builtin.win_service to ansible.windows.win_service
<win10work> CONNECT TO qemu:///system
<win10work> FIND DOMAIN win10work
<win10work> ESTABLISH community.libvirt.libvirt_qemu CONNECTION
<win10work> EXEC PowerShell -NoProfile -NonInteractive -ExecutionPolicy Unrestricted -EncodedCommand UwBlAHQALQBTAHQAcgBpAGMAdABNAG8AZABlACAALQBWAGUAcgBzAGkAbwBuACAATABhAHQAZQBzAHQACgAkAHQAbQBwAF8AcABhAHQAaAAgAD0AIABbAFMAeQBzAHQAZQBtAC4ARQBuAHYAaQByAG8AbgBtAGUAbgB0AF0AOgA6AEUAeABwAGEAbgBkAEUAbgB2AGkAcgBvAG4AbQBlAG4AdABWAGEAcgBpAGEAYgBsAGUAcwAoACcAJQBUAEUATQBQACUAJwApAAoAJAB0AG0AcAAgAD0AIABOAGUAdwAtAEkAdABlAG0AIAAtAFQAeQBwAGUAIABEAGkAcgBlAGMAdABvAHIAeQAgAC0AUABhAHQAaAAgACQAdABtAHAAXwBwAGEAdABoACAALQBOAGEAbQBlACAAJwBhAG4AcwBpAGIAbABlAC0AdABtAHAALQAxADYAOQAyADMANwAyADIANAAwAC4AOAA4ADEAOQA5ADYAOQAtADIANAAzADkAMgAyAC0AMgA0ADkAMgA0ADMAMQAyADYAMAA0ADgAMAA1ADkAJwAKAFcAcgBpAHQAZQAtAE8AdQB0AHAAdQB0ACAALQBJAG4AcAB1AHQATwBiAGoAZQBjAHQAIAAkAHQAbQBwAC4ARgB1AGwAbABOAGEAbQBlAAoASQBmACAAKAAtAG4AbwB0ACAAJAA/ACkAIAB7ACAASQBmACAAKABHAGUAdAAtAFYAYQByAGkAYQBiAGwAZQAgAEwAQQBTAFQARQBYAEkAVABDAE8ARABFACAALQBFAHIAcgBvAHIAQQBjAHQAaQBvAG4AIABTAGkAbABlAG4AdABsAHkAQwBvAG4AdABpAG4AdQBlACkAIAB7ACAAZQB4AGkAdAAgACQATABBAFMAVABFAFgASQBUAEMATwBEAEUAIAB9ACAARQBsAHMAZQAgAHsAIABlAHgAaQB0ACAAMQAgAH0AIAB9AA==
<win10work> GA send: {"execute": "guest-exec", "arguments": {"path": "PowerShell", "capture-output": true, "arg": ["-NoProfile", "-NonInteractive", "-ExecutionPolicy", "Unrestricted", "-EncodedCommand", "UABvAHcAZQByAFMAaABlAGwAbAAgAC0ATgBvAFAAcgBvAGYAaQBsAGUAIAAtAE4AbwBuAEkAbgB0AGUAcgBhAGMAdABpAHYAZQAgAC0ARQB4AGUAYwB1AHQAaQBvAG4AUABvAGwAaQBjAHkAIABVAG4AcgBlAHMAdAByAGkAYwB0AGUAZAAgAC0ARQBuAGMAbwBkAGUAZABDAG8AbQBtAGEAbgBkACAAVQB3AEIAbABBAEgAUQBBAEwAUQBCAFQAQQBIAFEAQQBjAGcAQgBwAEEARwBNAEEAZABBAEIATgBBAEcAOABBAFoAQQBCAGwAQQBDAEEAQQBMAFEAQgBXAEEARwBVAEEAYwBnAEIAegBBAEcAawBBAGIAdwBCAHUAQQBDAEEAQQBUAEEAQgBoAEEASABRAEEAWgBRAEIAegBBAEgAUQBBAEMAZwBBAGsAQQBIAFEAQQBiAFEAQgB3AEEARgA4AEEAYwBBAEIAaABBAEgAUQBBAGEAQQBBAGcAQQBEADAAQQBJAEEAQgBiAEEARgBNAEEAZQBRAEIAegBBAEgAUQBBAFoAUQBCAHQAQQBDADQAQQBSAFEAQgB1AEEASABZAEEAYQBRAEIAeQBBAEcAOABBAGIAZwBCAHQAQQBHAFUAQQBiAGcAQgAwAEEARgAwAEEATwBnAEEANgBBAEUAVQBBAGUAQQBCAHcAQQBHAEUAQQBiAGcAQgBrAEEARQBVAEEAYgBnAEIAMgBBAEcAawBBAGMAZwBCAHYAQQBHADQAQQBiAFEAQgBsAEEARwA0AEEAZABBAEIAVwBBAEcARQBBAGMAZwBCAHAAQQBHAEUAQQBZAGcAQgBzAEEARwBVAEEAYwB3AEEAbwBBAEMAYwBBAEoAUQBCAFUAQQBFAFUAQQBUAFEAQgBRAEEAQwBVAEEASgB3AEEAcABBAEEAbwBBAEoAQQBCADAAQQBHADAAQQBjAEEAQQBnAEEARAAwAEEASQBBAEIATwBBAEcAVQBBAGQAdwBBAHQAQQBFAGsAQQBkAEEAQgBsAEEARwAwAEEASQBBAEEAdABBAEYAUQBBAGUAUQBCAHcAQQBHAFUAQQBJAEEAQgBFAEEARwBrAEEAYwBnAEIAbABBAEcATQBBAGQAQQBCAHYAQQBIAEkAQQBlAFEAQQBnAEEAQwAwAEEAVQBBAEIAaABBAEgAUQBBAGEAQQBBAGcAQQBDAFEAQQBkAEEAQgB0AEEASABBAEEAWAB3AEIAdwBBAEcARQBBAGQAQQBCAG8AQQBDAEEAQQBMAFEAQgBPAEEARwBFAEEAYgBRAEIAbABBAEMAQQBBAEoAdwBCAGgAQQBHADQAQQBjAHcAQgBwAEEARwBJAEEAYgBBAEIAbABBAEMAMABBAGQAQQBCAHQAQQBIAEEAQQBMAFEAQQB4AEEARABZAEEATwBRAEEAeQBBAEQATQBBAE4AdwBBAHkAQQBEAEkAQQBOAEEAQQB3AEEAQwA0AEEATwBBAEEANABBAEQARQBBAE8AUQBBADUAQQBEAFkAQQBPAFEAQQB0AEEARABJAEEATgBBAEEAegBBAEQAawBBAE0AZwBBAHkAQQBDADAAQQBNAGcAQQAwAEEARABrAEEATQBnAEEAMABBAEQATQBBAE0AUQBBAHkAQQBEAFkAQQBNAEEAQQAwAEEARABnAEEATQBBAEEAMQBBAEQAawBBAEoAdwBBAEsAQQBGAGMAQQBjAGcAQgBwAEEASABRAEEAWgBRAEEAdABBAEUAOABBAGQAUQBCADAAQQBIAEEAQQBkAFEAQgAwAEEAQwBBAEEATABRAEIASgBBAEcANABBAGMAQQBCADEAQQBIAFEAQQBUAHcAQgBpAEEARwBvAEEAWgBRAEIAagBBAEgAUQBBAEkAQQBBAGsAQQBIAFEAQQBiAFEAQgB3AEEAQwA0AEEAUgBnAEIAMQBBAEcAdwBBAGIAQQBCAE8AQQBHAEUAQQBiAFEAQgBsAEEAQQBvAEEAUwBRAEIAbQBBAEMAQQBBAEsAQQBBAHQAQQBHADQAQQBiAHcAQgAwAEEAQwBBAEEASgBBAEEALwBBAEMAawBBAEkAQQBCADcAQQBDAEEAQQBTAFEAQgBtAEEAQwBBAEEASwBBAEIASABBAEcAVQBBAGQAQQBBAHQAQQBGAFkAQQBZAFEAQgB5AEEARwBrAEEAWQBRAEIAaQBBAEcAdwBBAFoAUQBBAGcAQQBFAHcAQQBRAFEAQgBUAEEARgBRAEEAUgBRAEIAWQBBAEUAawBBAFYAQQBCAEQAQQBFADgAQQBSAEEAQgBGAEEAQwBBAEEATABRAEIARgBBAEgASQBBAGMAZwBCAHYAQQBIAEkAQQBRAFEAQgBqAEEASABRAEEAYQBRAEIAdgBBAEcANABBAEkAQQBCAFQAQQBHAGsAQQBiAEEAQgBsAEEARwA0AEEAZABBAEIAcwBBAEgAawBBAFEAdwBCAHYAQQBHADQAQQBkAEEAQgBwAEEARwA0AEEAZABRAEIAbABBAEMAawBBAEkAQQBCADcAQQBDAEEAQQBaAFEAQgA0AEEARwBrAEEAZABBAEEAZwBBAEMAUQBBAFQAQQBCAEIAQQBGAE0AQQBWAEEAQgBGAEEARgBnAEEAUwBRAEIAVQBBAEUATQBBAFQAdwBCAEUAQQBFAFUAQQBJAEEAQgA5AEEAQwBBAEEAUgBRAEIAcwBBAEgATQBBAFoAUQBBAGcAQQBIAHMAQQBJAEEAQgBsAEEASABnAEEAYQBRAEIAMABBAEMAQQBBAE0AUQBBAGcAQQBIADAAQQBJAEEAQgA5AEEAQQA9AD0A"]}}
<win10work> GA return: {'return': {'pid': 5172}}
<win10work> GA send: {"execute": "guest-exec-status", "arguments": {"pid": 5172}}
<win10work> GA return: {'return': {'exited': False}}
<win10work> GA return: {'return': {'exitcode': 0, 'err-data': 'IzwgQ0xJWE1MDQo8T2JqcyBWZXJzaW9uPSIxLjEuMC4xIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9wb3dlcnNoZWxsLzIwMDQvMDQiPjxPYmogUz0icHJvZ3Jlc3MiIFJlZklkPSIwIj48VE4gUmVmSWQ9IjAiPjxUPlN5c3RlbS5NYW5hZ2VtZW50LkF1dG9tYXRpb24uUFNDdXN0b21PYmplY3Q8L1Q+PFQ+U3lzdGVtLk9iamVjdDwvVD48L1ROPjxNUz48STY0IE49IlNvdXJjZUlkIj4xPC9JNjQ+PFBSIE49IlJlY29yZCI+PEFWPk1vZHVsZSB3ZXJkZW4gZoFyIGVyc3RtYWxpZ2UgVmVyd2VuZHVuZyB2b3JiZXJlaXRldC48L0FWPjxBST4wPC9BST48TmlsIC8+PFBJPi0xPC9QST48UEM+LTE8L1BDPjxUPkNvbXBsZXRlZDwvVD48U1I+LTE8L1NSPjxTRD4gPC9TRD48L1BSPjwvTVM+PC9PYmo+PE9iaiBTPSJwcm9ncmVzcyIgUmVmSWQ9IjEiPjxUTlJlZiBSZWZJZD0iMCIgLz48TVM+PEk2NCBOPSJTb3VyY2VJZCI+MTwvSTY0PjxQUiBOPSJSZWNvcmQiPjxBVj5Nb2R1bGUgd2VyZGVuIGaBciBlcnN0bWFsaWdlIFZlcndlbmR1bmcgdm9yYmVyZWl0ZXQuPC9BVj48QUk+MDwvQUk+PE5pbCAvPjxQST4tMTwvUEk+PFBDPi0xPC9QQz48VD5Db21wbGV0ZWQ8L1Q+PFNSPi0xPC9TUj48U0Q+IDwvU0Q+PC9QUj48L01TPjwvT2JqPjwvT2Jqcz4=', 'out-data': 'QzpcV0lORE9XU1xURU1QXGFuc2libGUtdG1wLTE2OTIzNzIyNDAuODgxOTk2OS0yNDM5MjItMjQ5MjQzMTI2MDQ4MDU5DQo=', 'exited': True}}
<win10work> GA stdout: C:\WINDOWS\TEMP\ansible-tmp-1692372240.8819969-243922-249243126048059
<win10work> GA stderr: #< CLIXML
<Objs Version="1.1.0.1" xmlns="http://schemas.microsoft.com/powershell/2004/04"><Obj S="progress" RefId="0"><TN RefId="0"><T>System.Management.Automation.PSCustomObject</T><T>System.Object</T></TN><MS><I64 N="SourceId">1</I64><PR N="Record"><AV>Module werden f?r erstmalige Verwendung vorbereitet.</AV><AI>0</AI><Nil /><PI>-1</PI><PC>-1</PC><T>Completed</T><SR>-1</SR><SD> </SD></PR></MS></Obj><Obj S="progress" RefId="1"><TNRef RefId="0" /><MS><I64 N="SourceId">1</I64><PR N="Record"><AV>Module werden f?r erstmalige Verwendung vorbereitet.</AV><AI>0</AI><Nil /><PI>-1</PI><PC>-1</PC><T>Completed</T><SR>-1</SR><SD> </SD></PR></MS></Obj></Objs>
redirecting (type: modules) ansible.builtin.win_service to ansible.windows.win_service
Using module file /home/randall/.ansible/collections/ansible_collections/ansible/windows/plugins/modules/win_service.ps1
<win10work> PUT /home/randall/.ansible/tmp/ansible-local-243918p4swcum2/tmp9r9b0ahi TO C:\WINDOWS\TEMP\ansible-tmp-1692372240.8819969-243922-249243126048059\AnsiballZ_win_service.ps1
<win10work> GA send: {"execute": "guest-file-open", "arguments": {"path": "C:\\WINDOWS\\TEMP\\ansible-tmp-1692372240.8819969-243922-249243126048059\\AnsiballZ_win_service.ps1", "mode": "wb+"}}
<win10work> GA return: {'return': 1045}
<win10work> GA send: {"execute": "guest-file-close", "arguments": {"handle": 1045}}
<win10work> GA return: {'return': {}}
<win10work> EXEC type C:\WINDOWS\TEMP\ansible-tmp-1692372240.8819969-243922-249243126048059\AnsiballZ_win_service.ps1 | PowerShell -NoProfile -NonInteractive -ExecutionPolicy Unrestricted -EncodedCommand JgBjAGgAYwBwAC4AYwBvAG0AIAA2ADUAMAAwADEAIAA+ACAAJABuAHUAbABsAAoAaQBmACAAKAAkAFAAUwBWAGUAcgBzAGkAbwBuAFQAYQBiAGwAZQAuAFAAUwBWAGUAcgBzAGkAbwBuACAALQBsAHQAIABbAFYAZQByAHMAaQBvAG4AXQAiADMALgAwACIAKQAgAHsACgAnAHsAIgBmAGEAaQBsAGUAZAAiADoAdAByAHUAZQAsACIAbQBzAGcAIgA6ACIAQQBuAHMAaQBiAGwAZQAgAHIAZQBxAHUAaQByAGUAcwAgAFAAbwB3AGUAcgBTAGgAZQBsAGwAIAB2ADMALgAwACAAbwByACAAbgBlAHcAZQByACIAfQAnAAoAZQB4AGkAdAAgADEACgB9AAoAJABlAHgAZQBjAF8AdwByAGEAcABwAGUAcgBfAHMAdAByACAAPQAgACQAaQBuAHAAdQB0ACAAfAAgAE8AdQB0AC0AUwB0AHIAaQBuAGcACgAkAHMAcABsAGkAdABfAHAAYQByAHQAcwAgAD0AIAAkAGUAeABlAGMAXwB3AHIAYQBwAHAAZQByAF8AcwB0AHIALgBTAHAAbABpAHQAKABAACgAIgBgADAAYAAwAGAAMABgADAAIgApACwAIAAyACwAIABbAFMAdAByAGkAbgBnAFMAcABsAGkAdABPAHAAdABpAG8AbgBzAF0AOgA6AFIAZQBtAG8AdgBlAEUAbQBwAHQAeQBFAG4AdAByAGkAZQBzACkACgBJAGYAIAAoAC0AbgBvAHQAIAAkAHMAcABsAGkAdABfAHAAYQByAHQAcwAuAEwAZQBuAGcAdABoACAALQBlAHEAIAAyACkAIAB7ACAAdABoAHIAbwB3ACAAIgBpAG4AdgBhAGwAaQBkACAAcABhAHkAbABvAGEAZAAiACAAfQAKAFMAZQB0AC0AVgBhAHIAaQBhAGIAbABlACAALQBOAGEAbQBlACAAagBzAG8AbgBfAHIAYQB3ACAALQBWAGEAbAB1AGUAIAAkAHMAcABsAGkAdABfAHAAYQByAHQAcwBbADEAXQAKACQAZQB4AGUAYwBfAHcAcgBhAHAAcABlAHIAIAA9ACAAWwBTAGMAcgBpAHAAdABCAGwAbwBjAGsAXQA6ADoAQwByAGUAYQB0AGUAKAAkAHMAcABsAGkAdABfAHAAYQByAHQAcwBbADAAXQApAAoAJgAkAGUAeABlAGMAXwB3AHIAYQBwAHAAZQByAA==
<win10work> GA send: {"execute": "guest-exec", "arguments": {"path": "PowerShell", "capture-output": true, "arg": ["-NoProfile", "-NonInteractive", "-ExecutionPolicy", "Unrestricted", "-EncodedCommand", "dAB5AHAAZQAgAEMAOgBcAFcASQBOAEQATwBXAFMAXABUAEUATQBQAFwAYQBuAHMAaQBiAGwAZQAtAHQAbQBwAC0AMQA2ADkAMgAzADcAMgAyADQAMAAuADgAOAAxADkAOQA2ADkALQAyADQAMwA5ADIAMgAtADIANAA5ADIANAAzADEAMgA2ADAANAA4ADAANQA5AFwAQQBuAHMAaQBiAGEAbABsAFoAXwB3AGkAbgBfAHMAZQByAHYAaQBjAGUALgBwAHMAMQAgAHwAIABQAG8AdwBlAHIAUwBoAGUAbABsACAALQBOAG8AUAByAG8AZgBpAGwAZQAgAC0ATgBvAG4ASQBuAHQAZQByAGEAYwB0AGkAdgBlACAALQBFAHgAZQBjAHUAdABpAG8AbgBQAG8AbABpAGMAeQAgAFUAbgByAGUAcwB0AHIAaQBjAHQAZQBkACAALQBFAG4AYwBvAGQAZQBkAEMAbwBtAG0AYQBuAGQAIABKAGcAQgBqAEEARwBnAEEAWQB3AEIAdwBBAEMANABBAFkAdwBCAHYAQQBHADAAQQBJAEEAQQAyAEEARABVAEEATQBBAEEAdwBBAEQARQBBAEkAQQBBACsAQQBDAEEAQQBKAEEAQgB1AEEASABVAEEAYgBBAEIAcwBBAEEAbwBBAGEAUQBCAG0AQQBDAEEAQQBLAEEAQQBrAEEARgBBAEEAVQB3AEIAVwBBAEcAVQBBAGMAZwBCAHoAQQBHAGsAQQBiAHcAQgB1AEEARgBRAEEAWQBRAEIAaQBBAEcAdwBBAFoAUQBBAHUAQQBGAEEAQQBVAHcAQgBXAEEARwBVAEEAYwBnAEIAegBBAEcAawBBAGIAdwBCAHUAQQBDAEEAQQBMAFEAQgBzAEEASABRAEEASQBBAEIAYgBBAEYAWQBBAFoAUQBCAHkAQQBIAE0AQQBhAFEAQgB2AEEARwA0AEEAWABRAEEAaQBBAEQATQBBAEwAZwBBAHcAQQBDAEkAQQBLAFEAQQBnAEEASABzAEEAQwBnAEEAbgBBAEgAcwBBAEkAZwBCAG0AQQBHAEUAQQBhAFEAQgBzAEEARwBVAEEAWgBBAEEAaQBBAEQAbwBBAGQAQQBCAHkAQQBIAFUAQQBaAFEAQQBzAEEAQwBJAEEAYgBRAEIAegBBAEcAYwBBAEkAZwBBADYAQQBDAEkAQQBRAFEAQgB1AEEASABNAEEAYQBRAEIAaQBBAEcAdwBBAFoAUQBBAGcAQQBIAEkAQQBaAFEAQgB4AEEASABVAEEAYQBRAEIAeQBBAEcAVQBBAGMAdwBBAGcAQQBGAEEAQQBiAHcAQgAzAEEARwBVAEEAYwBnAEIAVABBAEcAZwBBAFoAUQBCAHMAQQBHAHcAQQBJAEEAQgAyAEEARABNAEEATABnAEEAdwBBAEMAQQBBAGIAdwBCAHkAQQBDAEEAQQBiAGcAQgBsAEEASABjAEEAWgBRAEIAeQBBAEMASQBBAGYAUQBBAG4AQQBBAG8AQQBaAFEAQgA0AEEARwBrAEEAZABBAEEAZwBBAEQARQBBAEMAZwBCADkAQQBBAG8AQQBKAEEAQgBsAEEASABnAEEAWgBRAEIAagBBAEYAOABBAGQAdwBCAHkAQQBHAEUAQQBjAEEAQgB3AEEARwBVAEEAYwBnAEIAZgBBAEgATQBBAGQAQQBCAHkAQQBDAEEAQQBQAFEAQQBnAEEAQwBRAEEAYQBRAEIAdQBBAEgAQQBBAGQAUQBCADAAQQBDAEEAQQBmAEEAQQBnAEEARQA4AEEAZABRAEIAMABBAEMAMABBAFUAdwBCADAAQQBIAEkAQQBhAFEAQgB1AEEARwBjAEEAQwBnAEEAawBBAEgATQBBAGMAQQBCAHMAQQBHAGsAQQBkAEEAQgBmAEEASABBAEEAWQBRAEIAeQBBAEgAUQBBAGMAdwBBAGcAQQBEADAAQQBJAEEAQQBrAEEARwBVAEEAZQBBAEIAbABBAEcATQBBAFgAdwBCADMAQQBIAEkAQQBZAFEAQgB3AEEASABBAEEAWgBRAEIAeQBBAEYAOABBAGMAdwBCADAAQQBIAEkAQQBMAGcAQgBUAEEASABBAEEAYgBBAEIAcABBAEgAUQBBAEsAQQBCAEEAQQBDAGcAQQBJAGcAQgBnAEEARABBAEEAWQBBAEEAdwBBAEcAQQBBAE0AQQBCAGcAQQBEAEEAQQBJAGcAQQBwAEEAQwB3AEEASQBBAEEAeQBBAEMAdwBBAEkAQQBCAGIAQQBGAE0AQQBkAEEAQgB5AEEARwBrAEEAYgBnAEIAbgBBAEYATQBBAGMAQQBCAHMAQQBHAGsAQQBkAEEAQgBQAEEASABBAEEAZABBAEIAcABBAEcAOABBAGIAZwBCAHoAQQBGADAAQQBPAGcAQQA2AEEARgBJAEEAWgBRAEIAdABBAEcAOABBAGQAZwBCAGwAQQBFAFUAQQBiAFEAQgB3AEEASABRAEEAZQBRAEIARgBBAEcANABBAGQAQQBCAHkAQQBHAGsAQQBaAFEAQgB6AEEAQwBrAEEAQwBnAEIASgBBAEcAWQBBAEkAQQBBAG8AQQBDADAAQQBiAGcAQgB2AEEASABRAEEASQBBAEEAawBBAEgATQBBAGMAQQBCAHMAQQBHAGsAQQBkAEEAQgBmAEEASABBAEEAWQBRAEIAeQBBAEgAUQBBAGMAdwBBAHUAQQBFAHcAQQBaAFEAQgB1AEEARwBjAEEAZABBAEIAbwBBAEMAQQBBAEwAUQBCAGwAQQBIAEUAQQBJAEEAQQB5AEEAQwBrAEEASQBBAEIANwBBAEMAQQBBAGQAQQBCAG8AQQBIAEkAQQBiAHcAQgAzAEEAQwBBAEEASQBnAEIAcABBAEcANABBAGQAZwBCAGgAQQBHAHcAQQBhAFEAQgBrAEEAQwBBAEEAYwBBAEIAaABBAEgAawBBAGIAQQBCAHYAQQBHAEUAQQBaAEEAQQBpAEEAQwBBAEEAZgBRAEEASwBBAEYATQBBAFoAUQBCADAAQQBDADAAQQBWAGcAQgBoAEEASABJAEEAYQBRAEIAaABBAEcASQBBAGIAQQBCAGwAQQBDAEEAQQBMAFEAQgBPAEEARwBFAEEAYgBRAEIAbABBAEMAQQBBAGEAZwBCAHoAQQBHADgAQQBiAGcAQgBmAEEASABJAEEAWQBRAEIAMwBBAEMAQQBBAEwAUQBCAFcAQQBHAEUAQQBiAEEAQgAxAEEARwBVAEEASQBBAEEAawBBAEgATQBBAGMAQQBCAHMAQQBHAGsAQQBkAEEAQgBmAEEASABBAEEAWQBRAEIAeQBBAEgAUQBBAGMAdwBCAGIAQQBEAEUAQQBYAFEAQQBLAEEAQwBRAEEAWgBRAEIANABBAEcAVQBBAFkAdwBCAGYAQQBIAGMAQQBjAGcAQgBoAEEASABBAEEAYwBBAEIAbABBAEgASQBBAEkAQQBBADkAQQBDAEEAQQBXAHcAQgBUAEEARwBNAEEAYwBnAEIAcABBAEgAQQBBAGQAQQBCAEMAQQBHAHcAQQBiAHcAQgBqAEEARwBzAEEAWABRAEEANgBBAEQAbwBBAFEAdwBCAHkAQQBHAFUAQQBZAFEAQgAwAEEARwBVAEEASwBBAEEAawBBAEgATQBBAGMAQQBCAHMAQQBHAGsAQQBkAEEAQgBmAEEASABBAEEAWQBRAEIAeQBBAEgAUQBBAGMAdwBCAGIAQQBEAEEAQQBYAFEAQQBwAEEAQQBvAEEASgBnAEEAawBBAEcAVQBBAGUAQQBCAGwAQQBHAE0AQQBYAHcAQgAzAEEASABJAEEAWQBRAEIAdwBBAEgAQQBBAFoAUQBCAHkAQQBBAD0APQA="]}}
<win10work> GA return: {'return': {'pid': 6524}}
<win10work> GA send: {"execute": "guest-exec-status", "arguments": {"pid": 6524}}
<win10work> GA return: {'return': {'exited': False}}
<win10work> GA return: {'return': {'exitcode': 0, 'err-data': 'IzwgQ0xJWE1MDQojPCBDTElYTUwNCjxPYmpzIFZlcnNpb249IjEuMS4wLjEiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL3Bvd2Vyc2hlbGwvMjAwNC8wNCI+PE9iaiBTPSJwcm9ncmVzcyIgUmVmSWQ9IjAiPjxUTiBSZWZJZD0iMCI+PFQ+U3lzdGVtLk1hbmFnZW1lbnQuQXV0b21hdGlvbi5QU0N1c3RvbU9iamVjdDwvVD48VD5TeXN0ZW0uT2JqZWN0PC9UPjwvVE4+PE1TPjxJNjQgTj0iU291cmNlSWQiPjE8L0k2ND48UFIgTj0iUmVjb3JkIj48QVY+TW9kdWxlIHdlcmRlbiBmgXIgZXJzdG1hbGlnZSBWZXJ3ZW5kdW5nIHZvcmJlcmVpdGV0LjwvQVY+PEFJPjA8L0FJPjxOaWwgLz48UEk+LTE8L1BJPjxQQz4tMTwvUEM+PFQ+Q29tcGxldGVkPC9UPjxTUj4tMTwvU1I+PFNEPiA8L1NEPjwvUFI+PC9NUz48L09iaj48T2JqIFM9InByb2dyZXNzIiBSZWZJZD0iMSI+PFROUmVmIFJlZklkPSIwIiAvPjxNUz48STY0IE49IlNvdXJjZUlkIj4yPC9JNjQ+PFBSIE49IlJlY29yZCI+PEFWPk1vZHVsZSB3ZXJkZW4gZoFyIGVyc3RtYWxpZ2UgVmVyd2VuZHVuZyB2b3JiZXJlaXRldC48L0FWPjxBST4wPC9BST48TmlsIC8+PFBJPi0xPC9QST48UEM+LTE8L1BDPjxUPkNvbXBsZXRlZDwvVD48U1I+LTE8L1NSPjxTRD4gPC9TRD48L1BSPjwvTVM+PC9PYmo+PC9PYmpzPjxPYmpzIFZlcnNpb249IjEuMS4wLjEiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL3Bvd2Vyc2hlbGwvMjAwNC8wNCI+PE9iaiBTPSJwcm9ncmVzcyIgUmVmSWQ9IjAiPjxUTiBSZWZJZD0iMCI+PFQ+U3lzdGVtLk1hbmFnZW1lbnQuQXV0b21hdGlvbi5QU0N1c3RvbU9iamVjdDwvVD48VD5TeXN0ZW0uT2JqZWN0PC9UPjwvVE4+PE1TPjxJNjQgTj0iU291cmNlSWQiPjE8L0k2ND48UFIgTj0iUmVjb3JkIj48QVY+TW9kdWxlIHdlcmRlbiBmgXIgZXJzdG1hbGlnZSBWZXJ3ZW5kdW5nIHZvcmJlcmVpdGV0LjwvQVY+PEFJPjA8L0FJPjxOaWwgLz48UEk+LTE8L1BJPjxQQz4tMTwvUEM+PFQ+Q29tcGxldGVkPC9UPjxTUj4tMTwvU1I+PFNEPiA8L1NEPjwvUFI+PC9NUz48L09iaj48T2JqIFM9InByb2dyZXNzIiBSZWZJZD0iMSI+PFROUmVmIFJlZklkPSIwIiAvPjxNUz48STY0IE49IlNvdXJjZUlkIj4yPC9JNjQ+PFBSIE49IlJlY29yZCI+PEFWPk1vZHVsZSB3ZXJkZW4gZoFyIGVyc3RtYWxpZ2UgVmVyd2VuZHVuZyB2b3JiZXJlaXRldC48L0FWPjxBST4wPC9BST48TmlsIC8+PFBJPi0xPC9QST48UEM+LTE8L1BDPjxUPkNvbXBsZXRlZDwvVD48U1I+LTE8L1NSPjxTRD4gPC9TRD48L1BSPjwvTVM+PC9PYmo+PC9PYmpzPg==', 'out-data': 'eyJjaGFuZ2VkIjpmYWxzZSwiaW52b2NhdGlvbiI6eyJtb2R1bGVfYXJncyI6eyJmYWlsdXJlX3Jlc2V0X3BlcmlvZF9zZWMiOm51bGwsImRlc2t0b3BfaW50ZXJhY3QiOmZhbHNlLCJmYWlsdXJlX2NvbW1hbmQiOm51bGwsImRlcGVuZGVuY3lfYWN0aW9uIjoic2V0IiwidXNlcm5hbWUiOm51bGwsInBhdGgiOm51bGwsImRlc2NyaXB0aW9uIjpudWxsLCJzaWRfaW5mbyI6bnVsbCwic3RhcnRfbW9kZSI6bnVsbCwibG9hZF9vcmRlcl9ncm91cCI6bnVsbCwic3RhdGUiOm51bGwsInJlcXVpcmVkX3ByaXZpbGVnZXMiOm51bGwsImZvcmNlX2RlcGVuZGVudF9zZXJ2aWNlcyI6ZmFsc2UsImVycm9yX2NvbnRyb2wiOm51bGwsImZhaWx1cmVfYWN0aW9ucyI6bnVsbCwiZmFpbHVyZV9hY3Rpb25zX29uX25vbl9jcmFzaF9mYWlsdXJlIjpudWxsLCJwcmVfc2h1dGRvd25fdGltZW91dF9tcyI6bnVsbCwicGFzc3dvcmQiOm51bGwsInNlcnZpY2VfdHlwZSI6bnVsbCwiZGVwZW5kZW5jaWVzIjpudWxsLCJkaXNwbGF5X25hbWUiOm51bGwsImZhaWx1cmVfcmVib290X21zZyI6bnVsbCwibmFtZSI6IlNwb29sZXIiLCJ1cGRhdGVfcGFzc3dvcmQiOm51bGx9fSwiZXhpc3RzIjp0cnVlLCJkZXBlbmRlbmNpZXMiOlsiUlBDU1MiLCJodHRwIl0sImRlc2NyaXB0aW9uIjoiRGllc2VyIERpZW5zdCBzcG9vbHQgRHJ1Y2thdWZ0coRnZSB1bmQgdmVyYXJiZWl0ZXQgSW50ZXJha3Rpb25lbiBtaXQgZGVtIERydWNrZXIuIFdlbm4gU2llIGRpZXNlbiBEaWVuc3QgYXVzc2NoYWx0ZW4sIGuUbm5lbiBTaWUgd2VkZXIgZHJ1Y2tlbiBub2NoIERydWNrZXIgYW56ZWlnZW4uIiwiZGVza3RvcF9pbnRlcmFjdCI6ZmFsc2UsImRpc3BsYXlfbmFtZSI6IkRydWNrd2FydGVzY2hsYW5nZSIsIm5hbWUiOiJTcG9vbGVyIiwicGF0aCI6IkM6XFxXSU5ET1dTXFxTeXN0ZW0zMlxcc3Bvb2xzdi5leGUiLCJzdGFydF9tb2RlIjoiYXV0byIsInVzZXJuYW1lIjoiTG9jYWxTeXN0ZW0iLCJzdGF0ZSI6InJ1bm5pbmciLCJjYW5fcGF1c2VfYW5kX2NvbnRpbnVlIjpmYWxzZSwiZGVwZW5kZWRfYnkiOlsiRmF4Il0sImRpZmYiOnsiYmVmb3JlIjp7ImRlc2t0b3BfaW50ZXJhY3QiOmZhbHNlLCJzZXJ2aWNlX3R5cGUiOiJ3aW4zMl9vd25fcHJvY2VzcyIsImZhaWx1cmVfY29tbWFuZCI6bnVsbCwiZmFpbHVyZV9yZXNldF9wZXJpb2Rfc2VjIjozNjAwLCJzaWRfaW5mbyI6InVucmVzdHJpY3RlZCIsInVzZXJuYW1lIjoiTlQtQVVUT1JJVI5UXFxTWVNURU0iLCJzdGFydF9tb2RlIjoiYXV0byIsIm5hbWUiOiJTcG9vbGVyIiwiZmFpbHVyZV9hY3Rpb25zIjpbeyJ0eXBlIjoicmVzdGFydCIsImRlbGF5X21zIjo1MDAwfSx7InR5cGUiOiJyZXN0YXJ0IiwiZGVsYXlfbXMiOjUwMDB9LHsidHlwZSI6Im5vbmUiLCJkZWxheV9tcyI6MH1dLCJmYWlsdXJlX2FjdGlvbnNfb25fbm9uX2NyYXNoX2ZhaWx1cmUiOmZhbHNlLCJzdGF0ZSI6InN0YXJ0ZWQiLCJlcnJvcl9jb250cm9sIjoibm9ybWFsIiwiZGlzcGxheV9uYW1lIjoiRHJ1Y2t3YXJ0ZXNjaGxhbmdlIiwicHJlX3NodXRkb3duX3RpbWVvdXRfbXMiOjEwMDAwLCJkZXNjcmlwdGlvbiI6IkRpZXNlciBEaWVuc3Qgc3Bvb2x0IERydWNrYXVmdHKEZ2UgdW5kIHZlcmFyYmVpdGV0IEludGVyYWt0aW9uZW4gbWl0IGRlbSBEcnVja2VyLiBXZW5uIFNpZSBkaWVzZW4gRGllbnN0IGF1c3NjaGFsdGVuLCBrlG5uZW4gU2llIHdlZGVyIGRydWNrZW4gbm9jaCBEcnVja2VyIGFuemVpZ2VuLiIsImRlcGVuZGVuY2llcyI6WyJSUENTUyIsImh0dHAiXSwibG9hZF9vcmRlcl9ncm91cCI6IlNwb29sZXJHcm91cCIsInJlcXVpcmVkX3ByaXZpbGVnZXMiOlsiU2VUY2JQcml2aWxlZ2UiLCJTZUltcGVyc29uYXRlUHJpdmlsZWdlIiwiU2VBdWRpdFByaXZpbGVnZSIsIlNlQ2hhbmdlTm90aWZ5UHJpdmlsZWdlIiwiU2VBc3NpZ25QcmltYXJ5VG9rZW5Qcml2aWxlZ2UiLCJTZUxvYWREcml2ZXJQcml2aWxlZ2UiXSwicGFzc3dvcmQiOiJSRURBQ1RFRCIsImZhaWx1cmVfcmVib290X21zZyI6bnVsbCwicGF0aCI6IkM6XFxXSU5ET1dTXFxTeXN0ZW0zMlxcc3Bvb2xzdi5leGUifSwiYWZ0ZXIiOnsiZmFpbHVyZV9jb21tYW5kIjpudWxsLCJkZXNjcmlwdGlvbiI6IkRpZXNlciBEaWVuc3Qgc3Bvb2x0IERydWNrYXVmdHKEZ2UgdW5kIHZlcmFyYmVpdGV0IEludGVyYWt0aW9uZW4gbWl0IGRlbSBEcnVja2VyLiBXZW5uIFNpZSBkaWVzZW4gRGllbnN0IGF1c3NjaGFsdGVuLCBrlG5uZW4gU2llIHdlZGVyIGRydWNrZW4gbm9jaCBEcnVja2VyIGFuemVpZ2VuLiIsImZhaWx1cmVfcmVib290X21zZyI6bnVsbCwiZGlzcGxheV9uYW1lIjoiRHJ1Y2t3YXJ0ZXNjaGxhbmdlIiwidXNlcm5hbWUiOiJOVC1BVVRPUklUjlRcXFNZU1RFTSIsInBhc3N3b3JkIjoiUkVEQUNURUQiLCJwYXRoIjoiQzpcXFdJTkRPV1NcXFN5c3RlbTMyXFxzcG9vbHN2LmV4ZSIsInN0YXJ0X21vZGUiOiJhdXRvIiwibmFtZSI6IlNwb29sZXIiLCJsb2FkX29yZGVyX2dyb3VwIjoiU3Bvb2xlckdyb3VwIiwicmVxdWlyZWRfcHJpdmlsZWdlcyI6WyJTZVRjYlByaXZpbGVnZSIsIlNlSW1wZXJzb25hdGVQcml2aWxlZ2UiLCJTZUF1ZGl0UHJpdmlsZWdlIiwiU2VDaGFuZ2VOb3RpZnlQcml2aWxlZ2UiLCJTZUFzc2lnblByaW1hcnlUb2tlblByaXZpbGVnZSIsIlNlTG9hZERyaXZlclByaXZpbGVnZSJdLCJmYWlsdXJlX2FjdGlvbnNfb25fbm9uX2NyYXNoX2ZhaWx1cmUiOmZhbHNlLCJzZXJ2aWNlX3R5cGUiOiJ3aW4zMl9vd25fcHJvY2VzcyIsInByZV9zaHV0ZG93bl90aW1lb3V0X21zIjoxMDAwMCwic2lkX2luZm8iOiJ1bnJlc3RyaWN0ZWQiLCJkZXNrdG9wX2ludGVyYWN0IjpmYWxzZSwic3RhdGUiOiJzdGFydGVkIiwiZXJyb3JfY29udHJvbCI6Im5vcm1hbCIsImZhaWx1cmVfcmVzZXRfcGVyaW9kX3NlYyI6MzYwMCwiZmFpbHVyZV9hY3Rpb25zIjpbeyJ0eXBlIjoicmVzdGFydCIsImRlbGF5X21zIjo1MDAwfSx7InR5cGUiOiJyZXN0YXJ0IiwiZGVsYXlfbXMiOjUwMDB9LHsidHlwZSI6Im5vbmUiLCJkZWxheV9tcyI6MH1dLCJkZXBlbmRlbmNpZXMiOlsiUlBDU1MiLCJodHRwIl19fX0NCg0K', 'exited': True}}
<win10work> GA stdout: {"changed":false,"invocation":{"module_args":{"failure_reset_period_sec":null,"desktop_interact":false,"failure_command":null,"dependency_action":"set","username":null,"path":null,"description":null,"sid_info":null,"start_mode":null,"load_order_group":null,"state":null,"required_privileges":null,"force_dependent_services":false,"error_control":null,"failure_actions":null,"failure_actions_on_non_crash_failure":null,"pre_shutdown_timeout_ms":null,"password":null,"service_type":null,"dependencies":null,"display_name":null,"failure_reboot_msg":null,"name":"Spooler","update_password":null}},"exists":true,"dependencies":["RPCSS","http"],"description":"Dieser Dienst spoolt Druckauftr?ge und verarbeitet Interaktionen mit dem Drucker. Wenn Sie diesen Dienst ausschalten, k?nnen Sie weder drucken noch Drucker anzeigen.","desktop_interact":false,"display_name":"Druckwarteschlange","name":"Spooler","path":"C:\\WINDOWS\\System32\\spoolsv.exe","start_mode":"auto","username":"LocalSystem","state":"running","can_pause_and_continue":false,"depended_by":["Fax"],"diff":{"before":{"desktop_interact":false,"service_type":"win32_own_process","failure_command":null,"failure_reset_period_sec":3600,"sid_info":"unrestricted","username":"NT-AUTORIT?T\\SYSTEM","start_mode":"auto","name":"Spooler","failure_actions":[{"type":"restart","delay_ms":5000},{"type":"restart","delay_ms":5000},{"type":"none","delay_ms":0}],"failure_actions_on_non_crash_failure":false,"state":"started","error_control":"normal","display_name":"Druckwarteschlange","pre_shutdown_timeout_ms":10000,"description":"Dieser Dienst spoolt Druckauftr?ge und verarbeitet Interaktionen mit dem Drucker. Wenn Sie diesen Dienst ausschalten, k?nnen Sie weder drucken noch Drucker anzeigen.","dependencies":["RPCSS","http"],"load_order_group":"SpoolerGroup","required_privileges":["SeTcbPrivilege","SeImpersonatePrivilege","SeAuditPrivilege","SeChangeNotifyPrivilege","SeAssignPrimaryTokenPrivilege","SeLoadDriverPrivilege"],"password":"REDACTED","failure_reboot_msg":null,"path":"C:\\WINDOWS\\System32\\spoolsv.exe"},"after":{"failure_command":null,"description":"Dieser Dienst spoolt Druckauftr?ge und verarbeitet Interaktionen mit dem Drucker. Wenn Sie diesen Dienst ausschalten, k?nnen Sie weder drucken noch Drucker anzeigen.","failure_reboot_msg":null,"display_name":"Druckwarteschlange","username":"NT-AUTORIT?T\\SYSTEM","password":"REDACTED","path":"C:\\WINDOWS\\System32\\spoolsv.exe","start_mode":"auto","name":"Spooler","load_order_group":"SpoolerGroup","required_privileges":["SeTcbPrivilege","SeImpersonatePrivilege","SeAuditPrivilege","SeChangeNotifyPrivilege","SeAssignPrimaryTokenPrivilege","SeLoadDriverPrivilege"],"failure_actions_on_non_crash_failure":false,"service_type":"win32_own_process","pre_shutdown_timeout_ms":10000,"sid_info":"unrestricted","desktop_interact":false,"state":"started","error_control":"normal","failure_reset_period_sec":3600,"failure_actions":[{"type":"restart","delay_ms":5000},{"type":"restart","delay_ms":5000},{"type":"none","delay_ms":0}],"dependencies":["RPCSS","http"]}}}

<win10work> GA stderr: #< CLIXML
#< CLIXML
<Objs Version="1.1.0.1" xmlns="http://schemas.microsoft.com/powershell/2004/04"><Obj S="progress" RefId="0"><TN RefId="0"><T>System.Management.Automation.PSCustomObject</T><T>System.Object</T></TN><MS><I64 N="SourceId">1</I64><PR N="Record"><AV>Module werden f?r erstmalige Verwendung vorbereitet.</AV><AI>0</AI><Nil /><PI>-1</PI><PC>-1</PC><T>Completed</T><SR>-1</SR><SD> </SD></PR></MS></Obj><Obj S="progress" RefId="1"><TNRef RefId="0" /><MS><I64 N="SourceId">2</I64><PR N="Record"><AV>Module werden f?r erstmalige Verwendung vorbereitet.</AV><AI>0</AI><Nil /><PI>-1</PI><PC>-1</PC><T>Completed</T><SR>-1</SR><SD> </SD></PR></MS></Obj></Objs><Objs Version="1.1.0.1" xmlns="http://schemas.microsoft.com/powershell/2004/04"><Obj S="progress" RefId="0"><TN RefId="0"><T>System.Management.Automation.PSCustomObject</T><T>System.Object</T></TN><MS><I64 N="SourceId">1</I64><PR N="Record"><AV>Module werden f?r erstmalige Verwendung vorbereitet.</AV><AI>0</AI><Nil /><PI>-1</PI><PC>-1</PC><T>Completed</T><SR>-1</SR><SD> </SD></PR></MS></Obj><Obj S="progress" RefId="1"><TNRef RefId="0" /><MS><I64 N="SourceId">2</I64><PR N="Record"><AV>Module werden f?r erstmalige Verwendung vorbereitet.</AV><AI>0</AI><Nil /><PI>-1</PI><PC>-1</PC><T>Completed</T><SR>-1</SR><SD> </SD></PR></MS></Obj></Objs>
<win10work> EXEC PowerShell -NoProfile -NonInteractive -ExecutionPolicy Unrestricted -EncodedCommand UwBlAHQALQBTAHQAcgBpAGMAdABNAG8AZABlACAALQBWAGUAcgBzAGkAbwBuACAATABhAHQAZQBzAHQACgBSAGUAbQBvAHYAZQAtAEkAdABlAG0AIAAnAEMAOgBcAFcASQBOAEQATwBXAFMAXABUAEUATQBQAFwAYQBuAHMAaQBiAGwAZQAtAHQAbQBwAC0AMQA2ADkAMgAzADcAMgAyADQAMAAuADgAOAAxADkAOQA2ADkALQAyADQAMwA5ADIAMgAtADIANAA5ADIANAAzADEAMgA2ADAANAA4ADAANQA5AFwALgAnACAALQBGAG8AcgBjAGUAIAAtAFIAZQBjAHUAcgBzAGUAOwAKAEkAZgAgACgALQBuAG8AdAAgACQAPwApACAAewAgAEkAZgAgACgARwBlAHQALQBWAGEAcgBpAGEAYgBsAGUAIABMAEEAUwBUAEUAWABJAFQAQwBPAEQARQAgAC0ARQByAHIAbwByAEEAYwB0AGkAbwBuACAAUwBpAGwAZQBuAHQAbAB5AEMAbwBuAHQAaQBuAHUAZQApACAAewAgAGUAeABpAHQAIAAkAEwAQQBTAFQARQBYAEkAVABDAE8ARABFACAAfQAgAEUAbABzAGUAIAB7ACAAZQB4AGkAdAAgADEAIAB9ACAAfQA=
<win10work> GA send: {"execute": "guest-exec", "arguments": {"path": "PowerShell", "capture-output": true, "arg": ["-NoProfile", "-NonInteractive", "-ExecutionPolicy", "Unrestricted", "-EncodedCommand", "UABvAHcAZQByAFMAaABlAGwAbAAgAC0ATgBvAFAAcgBvAGYAaQBsAGUAIAAtAE4AbwBuAEkAbgB0AGUAcgBhAGMAdABpAHYAZQAgAC0ARQB4AGUAYwB1AHQAaQBvAG4AUABvAGwAaQBjAHkAIABVAG4AcgBlAHMAdAByAGkAYwB0AGUAZAAgAC0ARQBuAGMAbwBkAGUAZABDAG8AbQBtAGEAbgBkACAAVQB3AEIAbABBAEgAUQBBAEwAUQBCAFQAQQBIAFEAQQBjAGcAQgBwAEEARwBNAEEAZABBAEIATgBBAEcAOABBAFoAQQBCAGwAQQBDAEEAQQBMAFEAQgBXAEEARwBVAEEAYwBnAEIAegBBAEcAawBBAGIAdwBCAHUAQQBDAEEAQQBUAEEAQgBoAEEASABRAEEAWgBRAEIAegBBAEgAUQBBAEMAZwBCAFMAQQBHAFUAQQBiAFEAQgB2AEEASABZAEEAWgBRAEEAdABBAEUAawBBAGQAQQBCAGwAQQBHADAAQQBJAEEAQQBuAEEARQBNAEEATwBnAEIAYwBBAEYAYwBBAFMAUQBCAE8AQQBFAFEAQQBUAHcAQgBYAEEARgBNAEEAWABBAEIAVQBBAEUAVQBBAFQAUQBCAFEAQQBGAHcAQQBZAFEAQgB1AEEASABNAEEAYQBRAEIAaQBBAEcAdwBBAFoAUQBBAHQAQQBIAFEAQQBiAFEAQgB3AEEAQwAwAEEATQBRAEEAMgBBAEQAawBBAE0AZwBBAHoAQQBEAGMAQQBNAGcAQQB5AEEARABRAEEATQBBAEEAdQBBAEQAZwBBAE8AQQBBAHgAQQBEAGsAQQBPAFEAQQAyAEEARABrAEEATABRAEEAeQBBAEQAUQBBAE0AdwBBADUAQQBEAEkAQQBNAGcAQQB0AEEARABJAEEATgBBAEEANQBBAEQASQBBAE4AQQBBAHoAQQBEAEUAQQBNAGcAQQAyAEEARABBAEEATgBBAEEANABBAEQAQQBBAE4AUQBBADUAQQBGAHcAQQBMAGcAQQBuAEEAQwBBAEEATABRAEIARwBBAEcAOABBAGMAZwBCAGoAQQBHAFUAQQBJAEEAQQB0AEEARgBJAEEAWgBRAEIAagBBAEgAVQBBAGMAZwBCAHoAQQBHAFUAQQBPAHcAQQBLAEEARQBrAEEAWgBnAEEAZwBBAEMAZwBBAEwAUQBCAHUAQQBHADgAQQBkAEEAQQBnAEEAQwBRAEEAUAB3AEEAcABBAEMAQQBBAGUAdwBBAGcAQQBFAGsAQQBaAGcAQQBnAEEAQwBnAEEAUgB3AEIAbABBAEgAUQBBAEwAUQBCAFcAQQBHAEUAQQBjAGcAQgBwAEEARwBFAEEAWQBnAEIAcwBBAEcAVQBBAEkAQQBCAE0AQQBFAEUAQQBVAHcAQgBVAEEARQBVAEEAVwBBAEIASgBBAEYAUQBBAFEAdwBCAFAAQQBFAFEAQQBSAFEAQQBnAEEAQwAwAEEAUgBRAEIAeQBBAEgASQBBAGIAdwBCAHkAQQBFAEUAQQBZAHcAQgAwAEEARwBrAEEAYgB3AEIAdQBBAEMAQQBBAFUAdwBCAHAAQQBHAHcAQQBaAFEAQgB1AEEASABRAEEAYgBBAEIANQBBAEUATQBBAGIAdwBCAHUAQQBIAFEAQQBhAFEAQgB1AEEASABVAEEAWgBRAEEAcABBAEMAQQBBAGUAdwBBAGcAQQBHAFUAQQBlAEEAQgBwAEEASABRAEEASQBBAEEAawBBAEUAdwBBAFEAUQBCAFQAQQBGAFEAQQBSAFEAQgBZAEEARQBrAEEAVgBBAEIARABBAEUAOABBAFIAQQBCAEYAQQBDAEEAQQBmAFEAQQBnAEEARQBVAEEAYgBBAEIAegBBAEcAVQBBAEkAQQBCADcAQQBDAEEAQQBaAFEAQgA0AEEARwBrAEEAZABBAEEAZwBBAEQARQBBAEkAQQBCADkAQQBDAEEAQQBmAFEAQQA9AA=="]}}
<win10work> GA return: {'return': {'pid': 6476}}
<win10work> GA send: {"execute": "guest-exec-status", "arguments": {"pid": 6476}}
<win10work> GA return: {'return': {'exited': False}}
<win10work> GA return: {'return': {'exitcode': 0, 'err-data': 'IzwgQ0xJWE1MDQo8T2JqcyBWZXJzaW9uPSIxLjEuMC4xIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9wb3dlcnNoZWxsLzIwMDQvMDQiPjxPYmogUz0icHJvZ3Jlc3MiIFJlZklkPSIwIj48VE4gUmVmSWQ9IjAiPjxUPlN5c3RlbS5NYW5hZ2VtZW50LkF1dG9tYXRpb24uUFNDdXN0b21PYmplY3Q8L1Q+PFQ+U3lzdGVtLk9iamVjdDwvVD48L1ROPjxNUz48STY0IE49IlNvdXJjZUlkIj4xPC9JNjQ+PFBSIE49IlJlY29yZCI+PEFWPk1vZHVsZSB3ZXJkZW4gZoFyIGVyc3RtYWxpZ2UgVmVyd2VuZHVuZyB2b3JiZXJlaXRldC48L0FWPjxBST4wPC9BST48TmlsIC8+PFBJPi0xPC9QST48UEM+LTE8L1BDPjxUPkNvbXBsZXRlZDwvVD48U1I+LTE8L1NSPjxTRD4gPC9TRD48L1BSPjwvTVM+PC9PYmo+PC9PYmpzPg==', 'exited': True}}
<win10work> GA stdout: 
<win10work> GA stderr: #< CLIXML
<Objs Version="1.1.0.1" xmlns="http://schemas.microsoft.com/powershell/2004/04"><Obj S="progress" RefId="0"><TN RefId="0"><T>System.Management.Automation.PSCustomObject</T><T>System.Object</T></TN><MS><I64 N="SourceId">1</I64><PR N="Record"><AV>Module werden f?r erstmalige Verwendung vorbereitet.</AV><AI>0</AI><Nil /><PI>-1</PI><PC>-1</PC><T>Completed</T><SR>-1</SR><SD> </SD></PR></MS></Obj></Objs>
[WARNING]: Failure using method (v2_runner_on_ok) in callback plugin (<ansible_collections.community.general.plugins.callback.yaml.CallbackModule object at 0x7f9897036810>): 'utf-8' codec can't encode character '\udc84' in
position 31: surrogates not allowed
Callback Exception: 
  File "/usr/lib/python3/dist-packages/ansible/executor/task_queue_manager.py", line 450, in send_callback
    method(*new_args, **kwargs)
   File "/usr/lib/python3/dist-packages/ansible/plugins/callback/default.py", line 105, in v2_runner_on_ok
    msg += " => %s" % (self._dump_results(result._result),)
                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   File "/usr/lib/python3/dist-packages/ansible_collections/community/general/plugins/callback/yaml.py", line 123, in _dump_results
    dumped += to_text(yaml.dump(abridged_result, allow_unicode=True, width=1000, Dumper=MyDumper, default_flow_style=False))
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   File "/usr/lib/python3/dist-packages/yaml/__init__.py", line 253, in dump
    return dump_all([data], stream, Dumper=Dumper, **kwds)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   File "/usr/lib/python3/dist-packages/yaml/__init__.py", line 241, in dump_all
    dumper.represent(data)
   File "/usr/lib/python3/dist-packages/yaml/representer.py", line 28, in represent
    self.serialize(node)
   File "yaml/_yaml.pyx", line 1230, in yaml._yaml.CEmitter.serialize
   File "yaml/_yaml.pyx", line 1377, in yaml._yaml.CEmitter._serialize_node
   File "yaml/_yaml.pyx", line 1304, in yaml._yaml.CEmitter._serialize_node

TASK [debug] **************************************************************************************************************************************************************************************************************************
task path: /home/randall/Coding/gits-playbook/debug_win_service.yml:9
Loading collection community.libvirt from /usr/lib/python3/dist-packages/ansible_collections/community/libvirt
Callback Exception: 
  File "/usr/lib/python3/dist-packages/ansible/executor/task_queue_manager.py", line 450, in send_callback
    method(*new_args, **kwargs)
   File "/usr/lib/python3/dist-packages/ansible/plugins/callback/default.py", line 105, in v2_runner_on_ok
    msg += " => %s" % (self._dump_results(result._result),)
                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   File "/usr/lib/python3/dist-packages/ansible_collections/community/general/plugins/callback/yaml.py", line 123, in _dump_results
    dumped += to_text(yaml.dump(abridged_result, allow_unicode=True, width=1000, Dumper=MyDumper, default_flow_style=False))
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   File "/usr/lib/python3/dist-packages/yaml/__init__.py", line 253, in dump
    return dump_all([data], stream, Dumper=Dumper, **kwds)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   File "/usr/lib/python3/dist-packages/yaml/__init__.py", line 241, in dump_all
    dumper.represent(data)
   File "/usr/lib/python3/dist-packages/yaml/representer.py", line 28, in represent
    self.serialize(node)
   File "yaml/_yaml.pyx", line 1230, in yaml._yaml.CEmitter.serialize
   File "yaml/_yaml.pyx", line 1377, in yaml._yaml.CEmitter._serialize_node
   File "yaml/_yaml.pyx", line 1304, in yaml._yaml.CEmitter._serialize_node

PLAY RECAP ****************************************************************************************************************************************************************************************************************************
win10work                  : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   

Seems like the German Windows 10 installation uses iso-8859-1 instead of utf-8 by default:

PS C:\Users\work> [System.Text.Encoding]::Default


IsSingleByte      : True
BodyName          : iso-8859-1
EncodingName      : Westeuropäisch (Windows)
HeaderName        : Windows-1252
WebName           : Windows-1252
WindowsCodePage   : 1252
IsBrowserDisplay  : True
IsBrowserSave     : True
IsMailNewsDisplay : True
IsMailNewsSave    : True
EncoderFallback   : System.Text.InternalEncoderBestFitFallback
DecoderFallback   : System.Text.InternalDecoderBestFitFallback
IsReadOnly        : True
CodePage          : 1252

I think all win_* plugins should handle this correctly by converting to utf-8 before passing the data on.

Running this on an English Windows 11 VM returns:

$  ansible-playbook debug_win_service.yml --diff 

PLAY [win11trial] *********************************************************************************************************************************************************************************************************************

TASK [Gathering Facts] ****************************************************************************************************************************************************************************************************************
ok: [win11trial]

TASK [win_service] ********************************************************************************************************************************************************************************************************************
--- before
+++ after
@@ -2,7 +2,7 @@
 - RPCSS
 - http
 description: This service spools print jobs and handles interaction with the printer.  If you turn off this service, you won't be able to print or see your printers.
-desktop_interact: true
+desktop_interact: false
 display_name: Print Spooler
 error_control: normal
 failure_actions:

changed: [win11trial]

TASK [debug] **************************************************************************************************************************************************************************************************************************
ok: [win11trial] => 
  msg: This service spools print jobs and handles interaction with the printer.  If you turn off this service, you won't be able to print or see your printers.

PLAY RECAP ****************************************************************************************************************************************************************************************************************************
win11trial                 : ok=3    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   

So this looks like it indeed is an encoding issue that is not being taken care of.

I'm not sure this is a problem with the module or anything used inside this collection/Ansible itself but I can be wrong. When Ansible executes modules that first thing it does is to change the console codepage to UTF-8 https://github.com/ansible/ansible/blob/devel/lib/ansible/executor/powershell/bootstrap_wrapper.ps1#L1. On the module side it deals directly with strings so it is going to write the string directly to the console stdout with UTF-8 bytes. Where I think the problem is happening here is in the community.libvirt.qemu connection plugin or even the libvirt Python library that is getting this raw output or maybe the chcp.com command doesn't work properly with how libvirt executes the command. In the verbose output you've provided (thank you for the detailed information) we can see the following base64 string was used to encode the bytes of the module output

eyJjaGFuZ2VkIjpmYWxzZSwiaW52b2NhdGlvbiI6eyJtb2R1bGVfYXJncyI6eyJmYWlsdXJlX3Jlc2V0X3BlcmlvZF9zZWMiOm51bGwsImRlc2t0b3BfaW50ZXJhY3QiOmZhbHNlLCJmYWlsdXJlX2NvbW1hbmQiOm51bGwsImRlcGVuZGVuY3lfYWN0aW9uIjoic2V0IiwidXNlcm5hbWUiOm51bGwsInBhdGgiOm51bGwsImRlc2NyaXB0aW9uIjpudWxsLCJzaWRfaW5mbyI6bnVsbCwic3RhcnRfbW9kZSI6bnVsbCwibG9hZF9vcmRlcl9ncm91cCI6bnVsbCwic3RhdGUiOm51bGwsInJlcXVpcmVkX3ByaXZpbGVnZXMiOm51bGwsImZvcmNlX2RlcGVuZGVudF9zZXJ2aWNlcyI6ZmFsc2UsImVycm9yX2NvbnRyb2wiOm51bGwsImZhaWx1cmVfYWN0aW9ucyI6bnVsbCwiZmFpbHVyZV9hY3Rpb25zX29uX25vbl9jcmFzaF9mYWlsdXJlIjpudWxsLCJwcmVfc2h1dGRvd25fdGltZW91dF9tcyI6bnVsbCwicGFzc3dvcmQiOm51bGwsInNlcnZpY2VfdHlwZSI6bnVsbCwiZGVwZW5kZW5jaWVzIjpudWxsLCJkaXNwbGF5X25hbWUiOm51bGwsImZhaWx1cmVfcmVib290X21zZyI6bnVsbCwibmFtZSI6IlNwb29sZXIiLCJ1cGRhdGVfcGFzc3dvcmQiOm51bGx9fSwiZXhpc3RzIjp0cnVlLCJkZXBlbmRlbmNpZXMiOlsiUlBDU1MiLCJodHRwIl0sImRlc2NyaXB0aW9uIjoiRGllc2VyIERpZW5zdCBzcG9vbHQgRHJ1Y2thdWZ0coRnZSB1bmQgdmVyYXJiZWl0ZXQgSW50ZXJha3Rpb25lbiBtaXQgZGVtIERydWNrZXIuIFdlbm4gU2llIGRpZXNlbiBEaWVuc3QgYXVzc2NoYWx0ZW4sIGuUbm5lbiBTaWUgd2VkZXIgZHJ1Y2tlbiBub2NoIERydWNrZXIgYW56ZWlnZW4uIiwiZGVza3RvcF9pbnRlcmFjdCI6ZmFsc2UsImRpc3BsYXlfbmFtZSI6IkRydWNrd2FydGVzY2hsYW5nZSIsIm5hbWUiOiJTcG9vbGVyIiwicGF0aCI6IkM6XFxXSU5ET1dTXFxTeXN0ZW0zMlxcc3Bvb2xzdi5leGUiLCJzdGFydF9tb2RlIjoiYXV0byIsInVzZXJuYW1lIjoiTG9jYWxTeXN0ZW0iLCJzdGF0ZSI6InJ1bm5pbmciLCJjYW5fcGF1c2VfYW5kX2NvbnRpbnVlIjpmYWxzZSwiZGVwZW5kZWRfYnkiOlsiRmF4Il0sImRpZmYiOnsiYmVmb3JlIjp7ImRlc2t0b3BfaW50ZXJhY3QiOmZhbHNlLCJzZXJ2aWNlX3R5cGUiOiJ3aW4zMl9vd25fcHJvY2VzcyIsImZhaWx1cmVfY29tbWFuZCI6bnVsbCwiZmFpbHVyZV9yZXNldF9wZXJpb2Rfc2VjIjozNjAwLCJzaWRfaW5mbyI6InVucmVzdHJpY3RlZCIsInVzZXJuYW1lIjoiTlQtQVVUT1JJVI5UXFxTWVNURU0iLCJzdGFydF9tb2RlIjoiYXV0byIsIm5hbWUiOiJTcG9vbGVyIiwiZmFpbHVyZV9hY3Rpb25zIjpbeyJ0eXBlIjoicmVzdGFydCIsImRlbGF5X21zIjo1MDAwfSx7InR5cGUiOiJyZXN0YXJ0IiwiZGVsYXlfbXMiOjUwMDB9LHsidHlwZSI6Im5vbmUiLCJkZWxheV9tcyI6MH1dLCJmYWlsdXJlX2FjdGlvbnNfb25fbm9uX2NyYXNoX2ZhaWx1cmUiOmZhbHNlLCJzdGF0ZSI6InN0YXJ0ZWQiLCJlcnJvcl9jb250cm9sIjoibm9ybWFsIiwiZGlzcGxheV9uYW1lIjoiRHJ1Y2t3YXJ0ZXNjaGxhbmdlIiwicHJlX3NodXRkb3duX3RpbWVvdXRfbXMiOjEwMDAwLCJkZXNjcmlwdGlvbiI6IkRpZXNlciBEaWVuc3Qgc3Bvb2x0IERydWNrYXVmdHKEZ2UgdW5kIHZlcmFyYmVpdGV0IEludGVyYWt0aW9uZW4gbWl0IGRlbSBEcnVja2VyLiBXZW5uIFNpZSBkaWVzZW4gRGllbnN0IGF1c3NjaGFsdGVuLCBrlG5uZW4gU2llIHdlZGVyIGRydWNrZW4gbm9jaCBEcnVja2VyIGFuemVpZ2VuLiIsImRlcGVuZGVuY2llcyI6WyJSUENTUyIsImh0dHAiXSwibG9hZF9vcmRlcl9ncm91cCI6IlNwb29sZXJHcm91cCIsInJlcXVpcmVkX3ByaXZpbGVnZXMiOlsiU2VUY2JQcml2aWxlZ2UiLCJTZUltcGVyc29uYXRlUHJpdmlsZWdlIiwiU2VBdWRpdFByaXZpbGVnZSIsIlNlQ2hhbmdlTm90aWZ5UHJpdmlsZWdlIiwiU2VBc3NpZ25QcmltYXJ5VG9rZW5Qcml2aWxlZ2UiLCJTZUxvYWREcml2ZXJQcml2aWxlZ2UiXSwicGFzc3dvcmQiOiJSRURBQ1RFRCIsImZhaWx1cmVfcmVib290X21zZyI6bnVsbCwicGF0aCI6IkM6XFxXSU5ET1dTXFxTeXN0ZW0zMlxcc3Bvb2xzdi5leGUifSwiYWZ0ZXIiOnsiZmFpbHVyZV9jb21tYW5kIjpudWxsLCJkZXNjcmlwdGlvbiI6IkRpZXNlciBEaWVuc3Qgc3Bvb2x0IERydWNrYXVmdHKEZ2UgdW5kIHZlcmFyYmVpdGV0IEludGVyYWt0aW9uZW4gbWl0IGRlbSBEcnVja2VyLiBXZW5uIFNpZSBkaWVzZW4gRGllbnN0IGF1c3NjaGFsdGVuLCBrlG5uZW4gU2llIHdlZGVyIGRydWNrZW4gbm9jaCBEcnVja2VyIGFuemVpZ2VuLiIsImZhaWx1cmVfcmVib290X21zZyI6bnVsbCwiZGlzcGxheV9uYW1lIjoiRHJ1Y2t3YXJ0ZXNjaGxhbmdlIiwidXNlcm5hbWUiOiJOVC1BVVRPUklUjlRcXFNZU1RFTSIsInBhc3N3b3JkIjoiUkVEQUNURUQiLCJwYXRoIjoiQzpcXFdJTkRPV1NcXFN5c3RlbTMyXFxzcG9vbHN2LmV4ZSIsInN0YXJ0X21vZGUiOiJhdXRvIiwibmFtZSI6IlNwb29sZXIiLCJsb2FkX29yZGVyX2dyb3VwIjoiU3Bvb2xlckdyb3VwIiwicmVxdWlyZWRfcHJpdmlsZWdlcyI6WyJTZVRjYlByaXZpbGVnZSIsIlNlSW1wZXJzb25hdGVQcml2aWxlZ2UiLCJTZUF1ZGl0UHJpdmlsZWdlIiwiU2VDaGFuZ2VOb3RpZnlQcml2aWxlZ2UiLCJTZUFzc2lnblByaW1hcnlUb2tlblByaXZpbGVnZSIsIlNlTG9hZERyaXZlclByaXZpbGVnZSJdLCJmYWlsdXJlX2FjdGlvbnNfb25fbm9uX2NyYXNoX2ZhaWx1cmUiOmZhbHNlLCJzZXJ2aWNlX3R5cGUiOiJ3aW4zMl9vd25fcHJvY2VzcyIsInByZV9zaHV0ZG93bl90aW1lb3V0X21zIjoxMDAwMCwic2lkX2luZm8iOiJ1bnJlc3RyaWN0ZWQiLCJkZXNrdG9wX2ludGVyYWN0IjpmYWxzZSwic3RhdGUiOiJzdGFydGVkIiwiZXJyb3JfY29udHJvbCI6Im5vcm1hbCIsImZhaWx1cmVfcmVzZXRfcGVyaW9kX3NlYyI6MzYwMCwiZmFpbHVyZV9hY3Rpb25zIjpbeyJ0eXBlIjoicmVzdGFydCIsImRlbGF5X21zIjo1MDAwfSx7InR5cGUiOiJyZXN0YXJ0IiwiZGVsYXlfbXMiOjUwMDB9LHsidHlwZSI6Im5vbmUiLCJkZWxheV9tcyI6MH1dLCJkZXBlbmRlbmNpZXMiOlsiUlBDU1MiLCJodHRwIl19fX0NCg0K

When looking at the raw bytes of this output we can focus on some non-ASCII chars in the description and we can see:

...
0000000000000270 52 50 43 53 53 22 2C 22 68 74 74 70 22 5D 2C 22 RPCSS","http"],"
0000000000000280 64 65 73 63 72 69 70 74 69 6F 6E 22 3A 22 44 69 description":"Di
0000000000000290 65 73 65 72 20 44 69 65 6E 73 74 20 73 70 6F 6F eser Dienst spoo
00000000000002A0 6C 74 20 44 72 75 63 6B 61 75 66 74 72 84 67 65 lt Druckauftr�ge
00000000000002B0 20 75 6E 64 20 76 65 72 61 72 62 65 69 74 65 74  und verarbeitet
00000000000002C0 20 49 6E 74 65 72 61 6B 74 69 6F 6E 65 6E 20 6D  Interaktionen m
00000000000002D0 69 74 20 64 65 6D 20 44 72 75 63 6B 65 72 2E 20 it dem Drucker.
00000000000002E0 57 65 6E 6E 20 53 69 65 20 64 69 65 73 65 6E 20 Wenn Sie diesen
00000000000002F0 44 69 65 6E 73 74 20 61 75 73 73 63 68 61 6C 74 Dienst ausschalt
0000000000000300 65 6E 2C 20 6B 94 6E 6E 65 6E 20 53 69 65 20 77 en, k�nnen Sie w
0000000000000310 65 64 65 72 20 64 72 75 63 6B 65 6E 20 6E 6F 63 eder drucken noc
0000000000000320 68 20 44 72 75 63 6B 65 72 20 61 6E 7A 65 69 67 h Drucker anzeig
0000000000000330 65 6E 2E 22 2C 22 64 65 73 6B 74 6F 70 5F 69 6E en.","desktop_in
0000000000000340 74 65 72 61 63 74 22 3A 66 61 6C 73 65 2C 22 64 teract":false,"d
...

Focusing on one of the lines we can see the value ä in Druckaufträge has been sent with the raw byte 0x84 and not 0xC3 0xA4 as expected. So either Windows is returning the raw bytes as 0x84 for this character or something else is getting in the way. A nice and easy way to test this is to run a very basic PowerShell module that outputs this character and see how it is returned back to Ansible. For example I have this module called test_encoding.ps1

#!powershell

#AnsibleRequires -CSharpUtil Ansible.Basic

$module = [Ansible.Basic.AnsibleModule]::Create(@(), @{})
$module.Result.test = "Druckauftr$([char]0xE4)ge"
$module.ExitJson()

It is designed to emit the word Druckaufträge in the normal module mechanism without the module itself using any non-ASCII chars to rule out encoding issues when being transfered. When testing with the psrp and winrm connection plugins I see it is returned as expected.

TASK [test_encoding] *************************************************************************************************************************************************************************************************************************************************************
task path: /home/jborean/dev/ansible-tester/main.yml:4
Using module file /home/jborean/dev/ansible-tester/library/test_encoding.ps1
Pipelining is enabled.
<SERVER2022.domain.test> ESTABLISH PSRP CONNECTION FOR USER: None ON PORT 5985 TO SERVER2022.domain.test
PSRP: EXEC (via pipeline wrapper)
ok: [SERVER2022] => {
    "changed": false,
    "invocation": {
        "module_args": {}
    },
    "test": "Druckaufträge"
}

What happens when you run this basic module with the community.libvirt.qemu connection plugin on your host. If it works then yes it sounds like win_service might not be getting the proper value back here, if it doesn't then something seems problematic with either the connection plugin, the libvirt Python library, or even how libvirt executes the code and it not correctly executing the chcp.com command.

This is the result:

$ ANSIBLE_LIBRARY=./library/ ansible -m test_encoding win10work
win10work | SUCCESS => {
    "changed": false,
    "test": "Druckauftr?ge"
}
$ ANSIBLE_LIBRARY=./library/ ansible -m test_encoding win11trial
win11trial | SUCCESS => {
    "changed": false,
    "test": "Druckauftr?ge"
}

win10work is the German Windows 10 VM, win11trial is the US english Windows 11 VM. In both cases the Umlaut "ä" is rendered as a question mark.

On more data point: If I follow the instructions at https://helpcenter.nshift.com/hc/en-us/articles/360016886479-Errors-caused-by-Windows-10-Unicode-UTF-8-encoding to change the default encoding to utf-8, the example in my original post works:

$ ansible-playbook debug_win_service.yml --diff

PLAY [win10work] ************************************************************************************************************************************************************

TASK [win_service] **********************************************************************************************************************************************************
ok: [win10work]

TASK [debug] ****************************************************************************************************************************************************************
ok: [win10work] => 
  msg: Dieser Dienst spoolt Druckaufträge und verarbeitet Interaktionen mit dem Drucker. Wenn Sie diesen Dienst ausschalten, können Sie weder drucken noch Drucker anzeigen.

PLAY RECAP ******************************************************************************************************************************************************************
win10work                  : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   

So it seems as win_service might not contain the bug. Anything else I could try to narrow it down?

See if you can run the stub module in the winrm, psrp, or ssh comnection which I know works fine with this. I think there’s some problem in how the qemu runner is working which is not something we control.

I took a bit, but I can now confirm that the issue is not present when connecting via winrm. Is it possible to assign this bug to ansible-collections/community.libvirt?

Unfortunately I do not have rights on that repo so I cannot transfer it. One thing to call out is that the ssh connection plugin explicitly calls chcp 65001 to set the console codepage to UTF-8. This shouldn't actually be needed as our module bootstrap wrapper runs this same command for every module run and is designed for things like raw which doesn't run with that wrapper.

https://github.com/ansible/ansible/blob/bdaa091b33f0ebb273c6ad99b3835530ba2b5a30/lib/ansible/plugins/connection/ssh.py#L1345-L1351

Potentially the libvirt/qemu runner needs to do a similar thing but that would be up to them to identify sorry.

Alright. Thanks for the heads-up. I'll file a new bug report and reference this one.