2014-10-27 70 views
0

好吧,所以我卡住了。我试图读取.Net文件的版本属性并将其保存到节点的属性中。所以我可以在节点的属性中看到服务器端的安装程序的版本。厨师PowerShell输出捕获到最新的厨师的属性12

我可以运行PowerShell脚本是这样的:

powershell_script 'filever' do 
    code <<-EOH 
     [System.Diagnostics.FileVersionInfo]::GetVersionInfo("C:\\Program Files\\Internet Explorer\\iexplore.exe").FileVersion > C:\\windows\\temp\\fileversion.txt 
     get-content -Path C:\\windows\\temp\\fileversion.txt 
    EOH 
end 

据我所知,PowerShell和窗户食谱现在厨师的基本安装的一部分,但它似乎powershell_out丢失。我试图像这样包括它,但没有喜悦。

我拥有所有的小角色,但我似乎无法让他们正确地凝胶。

+0

这已经跟进厨师邮件列表之前需要厨师::密新:: PowershellOut。请不要无理由交叉提问。 – coderanger 2014-10-27 17:42:15

+1

确实,我确实发过帖子,但我认为它与广泛的受众有关,因此我提出了一个问题。 – user230910 2014-10-28 04:47:21

+0

然后只要在这里问一下,让两个小组并行处理这个问题就浪费了50他们的%。 – coderanger 2014-10-28 04:50:23

回答

1

好的,所以问题是file_read在配方的早期阶段运行,而不是在它应该的时候结束。以下是任何可能需要将文件读入属性并将其发送回服务器的工作版本。

#Check the installed version 
powershell_script 'filever' do 
code <<-EOH 
[System.Diagnostics.FileVersionInfo]::GetVersionInfo("C:\\Program Files\\Internet Explorer\\iexplore.exe").FileVersion > c://chef//fileversion.txt 
EOH 
end 

#report back after all is done 
ruby_block "reportback" do 
    block do 
    encoding_options = { 
     :invalid   => :replace, # Replace invalid byte sequences 
     :undef    => :replace, # Replace anything not defined in ASCII 
     :replace   => '',  # Use a blank for those replacements 
     :universal_newline => true  # Always break lines with \n 
     } 
     node.normal[:ixserver][:Version_Installed] = File.read("C:\\chef\\fileversion.txt").encode(Encoding.find('ASCII'), encoding_options) 
    end 
end 
+1

感谢您跟进!我试图解决同样的问题,并且解决了同样的问题,但是在文本文件中读回问题(读入了额外的无效字符)。这解释了如何摆脱它们。 – james 2016-06-24 18:11:26

0

这不是厨师的工作原理。资源没有这种方式的返回值,大多数不能设置属性。你将不得不使用ruby_block资源或LWRP,但是这样做的复杂性很难解释。我不认为powershell_out是Chef中的一个实际的东西,你是否认为这是因为shell_out而存在,或者你是否在文档中看到过它?

+0

在互联网上有很多这方面的参考,这就是为什么我认为它存在:例如:http://kapilshardha.blogspot.ae/2013/12/using-powershellout-mixin-in-chef.html – user230910 2014-10-28 04:39:25

+0

好的,所以这里的基本想法是使配方报告成功到服务器。这样做的适当机制是什么? – user230910 2014-10-28 04:47:59

+0

噢可爱,它确实存在,因为Windows Cookbook与核心Chef命名空间歪曲https://github.com/opscode-cookbooks/windows/blob/master/libraries/powershell_out.rb :-( – coderanger 2014-10-28 04:49:41