Powershell_out不将Powershell输出保存到Chef中的变量

时间:2018-08-23 12:18:17

标签: chef chef-recipe

我试图在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“>”]

1 个答案:

答案 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_outMixlib::ShellOut.new()的一种帮助。

您在食谱中包含powershell_out的方法听起来不错(我不确定是否需要,但这取决于您的厨师客户版本)