Powershell 如何使用Ansible中的自定义事实从Windows主机检索已安装软件的列表
我创建了一个Powershell脚本,以便在列出已安装软件的目标Windows计算机上生成自定义Ansible事实。现在我无法在我的剧本中正确解析我的软件列表 我可以看到自定义事实的原始内容,但似乎JSON没有得到正确解析,因为我无法获得一个正确的列表对象来由循环语句处理。出现致命错误: 该任务包括一个带有未定义变量的选项。错误是:“ansible.utils.unsafe\u proxy.AnsibleUnsafeText对象”没有属性“name”\n\n 所有自定义事实(表示由Powershell自定义事实生成的Windows软件列表)由Ansible自动存储在Ansible_事实的自动生成变量/属性中,称为“Ansible_softwarelist”(“Ansible_”后缀+我的事实文件的名称,不带扩展名) 自定义事实(Powershell) 原始Powershell输出Powershell 如何使用Ansible中的自定义事实从Windows主机检索已安装软件的列表,powershell,ansible,Powershell,Ansible,我创建了一个Powershell脚本,以便在列出已安装软件的目标Windows计算机上生成自定义Ansible事实。现在我无法在我的剧本中正确解析我的软件列表 我可以看到自定义事实的原始内容,但似乎JSON没有得到正确解析,因为我无法获得一个正确的列表对象来由循环语句处理。出现致命错误: 该任务包括一个带有未定义变量的选项。错误是:“ansible.utils.unsafe\u proxy.AnsibleUnsafeText对象”没有属性“name”\n\n 所有自定义事实(表示由Powersh
{"name":"Software 1","version":"14.0.7015.1000","vendor":"Vendor 1"},
{"name":"Software 2","version":"14.1.1000","vendor":"Vendor 1"},
{"name":"Software 3","version":"1.5.2","vendor":"Vendor 1"}
Ansible剧本
tasks:
- name: "Deploy Powershell script (custom Windows facts)"
win_copy:
src: "/etc/ansible/files/facts/softwarelist.ps1"
dest: "C:\\remotedir\\softwarelist.ps1"
- name: "Gather custom facts"
setup:
fact_path: "C:\\remotedir"
- name: "View software list in Ansible by name"
debug:
msg: "{{ item.name }}"
loop: "{{ ansible_softwarelist }}"
尝试设置过滤器:“|to_json”这应该可以正确格式化您的值我刚才已经实现了这一点,如果您仍在进行此项工作,则没有什么建议
在Powershell输出中删除espace字符“`”并替换“get wmiobject”输出中的所有逗号会在Ansible中产生相同的错误消息。我的JSON输出有效吗?这里的win32_产品备注需要记住。我看到一些自定义软件设置在生产机器上被重置为默认设置,因为初级管理员在多台机器上运行此命令,因为所有msi上都进行了修复。您在中引用了哪个脚本?应该使用什么来代替Win32_产品?更新了脚本链接。脚本没有使用powershell函数,而是使用注册表值。@KokHowTeh要么
Win32reg\u addRemovePrograms
要么Sms\u InstalledSoftware
,我认为两者都是由SCCM安装的。否则:
tasks:
- name: "Deploy Powershell script (custom Windows facts)"
win_copy:
src: "/etc/ansible/files/facts/softwarelist.ps1"
dest: "C:\\remotedir\\softwarelist.ps1"
- name: "Gather custom facts"
setup:
fact_path: "C:\\remotedir"
- name: "View software list in Ansible by name"
debug:
msg: "{{ item.name }}"
loop: "{{ ansible_softwarelist }}"