在Chef Recipe中的registry_data_exists资源中使用Regex

时间:2017-12-07 09:04:31

标签: windows chef registrykey

我正在创建一个厨师食谱并尝试使用registry_key资源创建/更新注册表项。我如何使用正则表达式来验证注册表项的存在,并且只在必要时进行更新

registry_key'HKLM\\Software\\Microsoft\\WindowsNT\\CurrentVersion\\Winlogon' do values [{ name: 'SCRemoveOption', type: :string, data: '1', }] # recursive true action :create not_if { registry_data_exists?('HKLM\\Software\\Microsoft\\Windows NT\\CurrentVersion\\Winlogon',{ name: 'SCRemoveOption', type: :string, data: '1' } ,:x86_64) } end

如果注册表项与数据1或2或3一起存在,则无需udpate,否则registry_key-data应更新为1.

not_if { registry_data_exists?('HKLM\\Software\\Microsoft\\Windows NT\\CurrentVersion\\Winlogon',{ name: 'SCRemoveOption', type: :string, data: '([1-3])'} ,:x86_64) }

1 个答案:

答案 0 :(得分:0)

(先前努力的道歉)

我更喜欢使用powershell_script资源,因为我知道PS语法比ruby / Chef更好。我曾经检查安全策略启用/禁用如下: -

  powershell_script 'my_script' do
    guard_interpreter :powershell_script
    cwd 'C:\Temp'
    code <<-EOH
      <...set the registry key(s)...>
    EOH
    not_if '(get-itemproperty HKLM:\\System\\CurrentControlSet\\Control\\Lsa).DisableDomainCreds -eq "1"'
  end

也许你可以适应它使用一个或多个数组。