将环境变量传递给LWRP中的powershell_script中的资源保护

时间:2014-10-29 21:28:28

标签: powershell chef lwrp

我有一个LWRP,其提供者操作如下所示。我想将环境变量传递给资源保护程序:

action :create do
  powershell_script 'create file' do
    environment({'fileName' => new_resource.fileName})
    code <<-EOH
      New-Item $env:fileName
      EOH
    guard_interpreter :powershell_script
    not_if '(Test-Path $env:fileName)'
end

在上面的示例中,我要做的是创建一个新文件(如果尚未存在)。执行此操作时,每次都会创建新文件。我希望第二次围绕守卫执行并且不会重新创建资源。我认为发生的事情是我无法在守卫中使用环境变量,就像我在代码块中一样。

请注意,我的现实生活中的问题要比这复杂得多,而且我不仅仅是在寻找一种创建文件的方法,如果它不存在的话。我需要知道如何在'not-if'块中使用轻量级资源中指定的属性。

1 个答案:

答案 0 :(得分:0)

它被埋葬了,但它在documentation here。就这样做:

action :create do
  my_environment = 'fileName' => new_resource.fileName
  powershell_script 'create file' do
    environment my_environment
    code <<-EOH
      New-Item $env:fileName
      EOH
    guard_interpreter :powershell_script
    not_if '(Test-Path $env:fileName)', :environment => my_environment
  end
end