- name: register os version (seems integration tests don't gather this fact) raw: powershell.exe "gwmi Win32_OperatingSystem | select -expand version" register: os_version changed_when: False # ^^ seems "raw" is the only module that works on 2008 non-r2. win_command and win_shell both failed - name: check if module fails gracefully when older than 2008r2 win_power_plan: name: "high performance" when: os_version.stdout_lines[0] | version_compare('6.1','lt') check_mode: yes register: old_os_check failed_when: old_os_check.msg != 'The win_power_plan Ansible module is only available on Server 2008r2 (6.1) and newer' - block: - name: register inactive power plan to test with win_shell: (Get-CimInstance -Name root\cimv2\power -Class win32_PowerPlan | ? {! $_.IsActive}).ElementName[0] register: disabled_power_plan changed_when: False - set_fact: name: "{{ disabled_power_plan.stdout_lines[0] }}" #Test that plan detects change is needed, but doesn't actually apply change - name: set power plan (check mode) win_power_plan: name: "{{ name }}" register: set_plan_check check_mode: yes # - debug: # var: set_plan_check - name: get result of set power plan (check mode) win_shell: (Get-CimInstance -Name root\cimv2\power -Class win32_PowerPlan -Filter "ElementName = '{{ name }}'").IsActive register: set_plan_check_result changed_when: False # verify that the powershell check is showing the plan as still inactive on the system - name: assert setting plan (check mode) assert: that: - set_plan_check|changed - set_plan_check_result.stdout == 'False\r\n' #Test that setting plan and that change is applied - name: set power plan win_power_plan: name: "{{ name }}" register: set_plan - name: get result of set power plan win_shell: (Get-CimInstance -Name root\cimv2\power -Class win32_PowerPlan -Filter "ElementName = '{{ name }}'").IsActive register: set_plan_result changed_when: False - name: assert setting plan assert: that: - set_plan|changed - set_plan_result.stdout == 'True\r\n' #Test that plan doesn't apply change if it is already set - name: set power plan (idempotent) win_power_plan: name: "{{ name }}" register: set_plan_idempotent - name: assert setting plan (idempotent) assert: that: - not set_plan_idempotent|changed when: os_version.stdout_lines[0] | version_compare('6.1','ge') always: - name: always change back plan to high performance when done testing win_power_plan: name: high performance