我试图在Chef中测试PowershellOut,以便从PS代码中获取一些值,然后将其保存到ruby变量中,以便在Chef代码中使用它。我创建了一个非常简单的方案来进行测试:
厨师代码:
::Chef::Resource::PowershellScript.send(:include, Chef::Mixin::PowershellOut)
testPO = <<-EOH
$varo = "new22"
$varo
EOH
newvar = powershell_out(testPO)
directory "C:\\Users\\Foo\\Desktop\\#{newvar}" do
action :delete
end
没有“红色”错误,但是我发现变量本身内部存在某种错误代码:
目录[C:\ Users \ foo \ Desktop#“ <” Mixlib :: ShellOut:0x58a8140“>”]
答案 0 :(得分:1)
您应该尝试newvar = powershell_out(testPO).stdout.chomp()
。
powershell_out的工作方式类似于shell_out,在here中有更好的记录。
以上自述文件中的语录:
简单Shellout 调用find(1)搜索.rb文件:
require 'mixlib/shellout' find = Mixlib::ShellOut.new("find . -name '*.rb'") find.run_command
如果一切顺利,结果将显示在标准输出上
puts find.stdout
请记住厨师食谱,因为厨师已经为您准备好了,所以您不需要'mixlib / shellout',shell_out
是Mixlib::ShellOut.new()
的一种帮助。
您在食谱中包含powershell_out的方法听起来不错(我不确定是否需要,但这取决于您的厨师客户版本)