# I dislike this but 2008 doesn't support the Win32_PowerPlan WMI provider - name: get current plan details win_shell: | $plan_info = powercfg.exe /list ($plan_info | Select-String -Pattern '\(([\w\s]*)\) \*$').Matches.Groups[1].Value ($plan_info | Select-String -Pattern '\(([\w\s]*)\)$').Matches.Groups[1].Value register: plan_info - set_fact: original_plan: '{{ plan_info.stdout_lines[0] }}' name: '{{ plan_info.stdout_lines[1] }}' - block: #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 - name: get result of set power plan (check mode) win_shell: (powercfg.exe /list | Select-String -Pattern '\({{ name }}\)').Line 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 is changed - not set_plan_check_result.stdout_lines[0].endswith('*') #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: (powercfg.exe /list | Select-String -Pattern '\({{ name }}\)').Line register: set_plan_result changed_when: False - name: assert setting plan assert: that: - set_plan is changed - set_plan_result.stdout_lines[0].endswith('*') #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: - set_plan_idempotent is not changed always: - name: always change back plan to the original when done testing win_power_plan: name: '{{ original_plan }}'