如何使用厨师在Windows中获取已安装程序的版本。

时间:2015-05-14 00:12:31

标签: windows chef chef-recipe

我试图获得安装在Windows服务器上的程序版本,我希望它作为配方中的变量。

基本上我试图找到版本,如果它不是我想要的,它将被删除,并将安装正确的程序版本。

我无法找到获得该版本的方法。

我想要的版本是Datadog代理。

1 个答案:

答案 0 :(得分:0)

在实现代码之前,您需要使用“regedit”在Widows“registry”中查看并找到该软件的确切注册表项值。

以下示例显示了如何获取“Internet Explorer”的版本号。

还建议具备Ruby数组和哈希的基础知识,以理解代码

我使用了registry_key_XXXXX Chef方法。

if registry_key_exists?('HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Internet Explorer')
  subkey_array = registry_get_values('HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Internet Explorer')
  Chef::Log.info("#{subkey_array}")
  reg_key_hash = subkey_array.at(-3)
  ver = reg_key_hash.values_at(:data)
  ie_version = ver.to_s[2, 2]
  Chef::Log.warn("IE version #{ie_version}")
else
  Chef::Log.warn("IE Registry key not found")
  return
end

注意:对于Windows 32位和64位

,注册表项可能会有所不同