如何将Exchange传输服务反病毒启用状态的布尔值存入Ansible变量
解决方案
方法1:直接解析输出为布尔值
通过win_shell直接返回布尔属性值,再用Ansible的过滤器将输出转为布尔变量:
- name: 获取Malware Agent启用状态 ansible.windows.win_shell: (Get-TransportAgent "Malware Agent").Enabled register: malware_agent_raw - name: 转换为布尔变量 set_fact: malware_agent_enabled: "{{ malware_agent_raw.stdout | trim | bool }}"
说明
- PowerShell命令直接输出
Enabled属性的True/False值 register捕获命令输出后,用trim清理多余空白,再通过bool过滤器将字符串转为原生布尔类型,最终malware_agent_enabled就是纯粹的布尔值,可直接用于后续条件判断(如when: malware_agent_enabled)
方法2:通过JSON格式确保解析可靠性
如果担心字符串解析的兼容性问题,可让PowerShell输出JSON格式结果,再解析为布尔变量:
- name: 获取Malware Agent启用状态(JSON格式) ansible.windows.win_shell: (Get-TransportAgent "Malware Agent").Enabled | ConvertTo-Json register: malware_agent_json_raw - name: 解析JSON结果 set_fact: malware_agent_enabled: "{{ malware_agent_json_raw.stdout | from_json }}"
说明
ConvertTo-Json将布尔值转为标准JSON格式的true/falsefrom_json过滤器直接把JSON字符串转为Ansible原生布尔类型,完全避免字符串转布尔的潜在问题
内容的提问来源于stack exchange,提问作者Tufty
相关产品推荐
相关产品推荐

