以一个小的PowerShell脚本开头的Chef Cookbook需要将返回的整数值传递给Chef

时间:2016-06-05 23:22:43

标签: powershell chef cookbook

我正在尝试完成某人的食谱,我需要能够让厨师从这个脚本中获取返回的整数0(有些细节已被删除)有关什么可以在Chef中使用的建议吗?我已经在Chef中添加了Powershell模块,特别是我在询问Chef将解析这些数据的顺序 - 就像在action:item中将这个变量交给......谢谢。

include_recipe "chef_handler

powershell_script do
  code <<-EOH
  ###############
  # 
  # Description:
  # Returns 1 if any share or share path allow read/write by the 'Everyone' group (fail)
  # Returns 0 if this condition is not found (pass)


  Try
  {
    #get all shares
    $shares = e | Select-Object Name,Path
    if($shares)
    {
      Foreach ($share in $shares)
      {
        #check everyone permissions
        $shareAccounts = -Name $share.Name
        Foreach ($account in $shareAccounts)
        {
          If ($account.AName -eq 'Everyone')
          {
            return 1
          }
        }

        #check 
        $volumePerm = Get-ACL $share.Path
        if ($volume.Access.Where({$Reference -eq 'Everyone'}))
        {
          return 1
        }
      }
    }
    else
    return 0


    #loop through each share checking for 'Everyone'
    # pass the return values send to Chef or something else.
  }

  {
    #build error message
  }
  Finally
  {
    #return final message
  }
  EOH

  fail "Instance has failed the OpenShares check" if code == 1

end

2 个答案:

答案 0 :(得分:1)

Chef资源没有输出值。如果PowerShell脚本失败,它将中止Chef运行,否则它将继续。

答案 1 :(得分:0)

您还可以查看returns块的powershell_script参数。如果指定类似[0,1]的值,则脚本不会失败。您也不能指定任何内容并尝试使用Ruby rescue来捕获异常。

那就是说,如果你真的需要这个值,我的建议是将值写入文件并在过程结束时将其读回,而不是返回它。

您可以参考此article使用powershell将文件写入文件,并使用this将文件读取到Ruby中的String