Chef - 从powershell脚本返回变量

时间:2013-12-27 18:22:03

标签: powershell-v2.0 chef

我想知道是否有办法从powershell_script资源中定义的powershell脚本返回变量值?

我的powershell资源如下所示:

powershell_script "Test Script" do
  code <<-EOH
    Write-Host "Hello World!"
   return "test"
  EOH
end

我想根据条件使用脚本中返回的值test在其他资源中使用。

由于

2 个答案:

答案 0 :(得分:5)

Ohai!

我认为您确实想要使用PowershellOut Mixin found here in the Powershell cookbook

Chef资源很少返回值,但这就是重量级资源的用途!

如果你有powershell食谱,你可以这样做:

include Chef::Mixin::PowershellOut
cmd = powershell_out!('command')
cmd.stdout #=> ...
cmd.stderr #=> ...

答案 1 :(得分:0)

我们实际上遇到了这个问题并通过编写我们自己的Mixlib来解决它,从PowerShell脚本中获取退出代码。例如:

# get the result object (and exit code) from the code execution:           
result = Mixlibrary::Core::Shell.windows_script_out(:powershell, mycode)
exit_status = result.exitstatus

@carpNick计划在本周尽快开源......目前它只处理PowerShell,但我们计划实施对其他类型的支持(bash,win模块等) - 应该相当容易添加对其他人的支持。

我们目前正在内部使用它,效果很好。我确信厨师一旦得到它就会想要检查尼克的优秀代码。我们只是在等法律告诉我们使用什么开源许可证。

向尼克询问更多详情... @carpnick | https://github.com/carpnick