--- - name: make sure win output dir exists win_file: path: "{{win_output_dir}}" state: directory - name: template out test registry structure win_copy: src: test_reg.reg dest: "{{win_output_dir}}\\raw_test_reg.reg" - name: convert the line endings to the windows variant win_shell: Get-Content "{{win_output_dir}}\raw_test_reg.reg" | Set-Content "{{win_output_dir}}\test_reg.reg" - name: import test registry structure win_regmerge: path: "{{win_output_dir}}\\test_reg.reg" - name: get value of expand string %windir% win_command: powershell.exe $env:windir register: win_dir_value - name: expect failure when not passing in key option win_reg_stat: property: a register: actual failed_when: "actual.msg != 'Missing required argument: key'" - name: expect failure when passing in an invalid hive win_reg_stat: key: ABCD:\test register: actual failed_when: actual.msg != "the hive in key is 'ABCD'; must be 'HKCR', 'HKCC', 'HKCU', 'HKLM' or 'HKU'" - name: get known nested reg key structure for testing with short hive form win_reg_stat: key: HKCU:\Test\nested register: actual_short - name: get known nested reg key structure for testing with quoted yaml win_reg_stat: key: "HKCU:\\Test\\nested" register: actual_quoted - name: set expected value for reg structure set_fact: expected: changed: false win_reg_stat: exists: true properties: binary: { raw_value: ["0x01", "0x16"], type: 'REG_BINARY', value: [1, 22] } dword: { raw_value: 1, type: 'REG_DWORD', value: 1 } expand: { raw_value: '%windir%\dir', type: 'REG_EXPAND_SZ', value: "{{win_dir_value.stdout_lines[0]}}\\dir" } multi: { raw_value: ['a, b', 'c'], type: 'REG_MULTI_SZ', value: ['a, b', 'c'] } qword: { raw_value: 1, type: 'REG_QWORD', value: 1 } string: { raw_value: 'test', type: 'REG_SZ', value: 'test' } sub_keys: - nest1 - nest2 - name: validate test assert: that: - "actual_short == expected" - "actual_quoted == expected" - name: get known reg key with no sub keys but some properties win_reg_stat: key: HKCU:\Test\single register: actual - name: set expected value for reg key with no sub keys but some properties set_fact: expected: changed: false win_reg_stat: exists: true properties: none: { raw_value: [], type: 'REG_NONE', value: [] } none1: { raw_value: ["0x00"], type: 'REG_NONE', value: [0] } string1: { raw_value: '', type: 'REG_SZ', value: '' } string2: { raw_value: 'abc123', type: 'REG_SZ', value: 'abc123' } sub_keys: [] - name: validate test assert: that: - "actual == expected" - name: get known reg key without sub keys and properties win_reg_stat: key: HKCU:\Test\nested\nest2 register: actual - name: set expected value for reg key without sub keys or properties set_fact: expected: changed: false win_reg_stat: exists: true properties: {} sub_keys: [] register: expected - name: validate test assert: that: - "actual == expected" - name: get non-existant reg key win_reg_stat: key: HKCU:\Test\Thispathwillneverexist register: actual - name: set expected value for non-existant reg key set_fact: expected: changed: false win_reg_stat: exists: false - name: validate test assert: that: - "actual == expected" - name: get string property win_reg_stat: key: HKCU:\Test\nested property: string register: actual - name: set expected string property set_fact: expected: changed: false win_reg_stat: exists: true raw_value: 'test' type: 'REG_SZ' value: 'test' - name: validate test assert: that: - "actual == expected" - name: get expand string property win_reg_stat: key: HKCU:\Test\nested property: expand register: actual - name: set expected expand string property set_fact: expected: changed: false win_reg_stat: exists: true raw_value: '%windir%\dir' type: 'REG_EXPAND_SZ' value: "{{win_dir_value.stdout_lines[0]}}\\dir" - name: validate test assert: that: - "actual == expected" - name: get multi string property win_reg_stat: key: HKCU:\Test\nested property: multi register: actual - name: set expected multi string property set_fact: expected: changed: false win_reg_stat: exists: true raw_value: ['a, b', 'c'] type: 'REG_MULTI_SZ' value: ['a, b', 'c'] - name: validate test assert: that: - "actual == expected" - name: get binary property win_reg_stat: key: HKCU:\Test\nested property: binary register: actual - name: set expected binary property set_fact: expected: changed: false win_reg_stat: exists: true raw_value: ["0x01", "0x16"] type: 'REG_BINARY' value: [1, 22] - name: validate test assert: that: - "actual == expected" - name: get dword property win_reg_stat: key: HKCU:\Test\nested property: dword register: actual - name: set expected dword property set_fact: expected: changed: false win_reg_stat: exists: true raw_value: 1 type: 'REG_DWORD' value: 1 - name: validate test assert: that: - "actual == expected" - name: get qword property win_reg_stat: key: HKCU:\Test\nested property: qword register: actual - name: set expected qword property set_fact: expected: changed: false win_reg_stat: exists: true raw_value: 1 type: 'REG_QWORD' value: 1 - name: validate test assert: that: - "actual == expected" - name: get none property win_reg_stat: key: HKCU:\Test\single property: none register: actual - name: set expected none property set_fact: expected: changed: false win_reg_stat: exists: true raw_value: [] type: 'REG_NONE' value: [] - name: validate test assert: that: - "actual == expected" - name: get none with value property win_reg_stat: key: HKCU:\Test\single property: none1 register: actual - name: set expected none with value property set_fact: expected: changed: false win_reg_stat: exists: true raw_value: ["0x00"] type: 'REG_NONE' value: [0] - name: validate test assert: that: - "actual == expected" - name: get non-existance property win_reg_stat: key: HKCU:\Test\single property: doesnotexist register: actual - name: set expected non-existance property set_fact: expected: changed: false win_reg_stat: exists: false - name: validate test assert: that: - "actual == expected" - name: remove registry entry win_regedit: key: HKCU:\Test state: absent