【发布时间】:2017-11-16 06:19:58
【问题描述】:
我有以下厨师/powershell 代码:
# Configure Registry Keys
powershell_script 'Configure Registry Keys' do
code <<-EOH
# Set the default location for data files
Set-ItemProperty -Path "HKLM:\\Software\\Microsoft\\Microsoft SQL Server\\MSSQL14.MSSQLSERVER\\MSSQLServer" -Name DefaultData -Value "D:\\Program Files\\Microsoft SQL Server\\MSSQL14.MSSQLSERVER\\MSSQL\\DATA"
# Set the default location for log files
Set-ItemProperty -Path "HKLM:\\Software\\Microsoft\\Microsoft SQL Server\\MSSQL14.MSSQLSERVER\\MSSQLServer" -Name DefaultLog -Value "L:\\Program Files\\Microsoft SQL Server\\MSSQL14.MSSQLSERVER\\MSSQL\\DATA"
# Set the default location for backup files
Set-ItemProperty -Path "HKLM:\\Software\\Microsoft\\Microsoft SQL Server\\MSSQL14.MSSQLSERVER\\MSSQLServer" -Name BackupDirectory -Value "B:\\sqlbackups"
restart-service *sql* -force
EOH
guard_interpreter :powershell_script
not_if "(Get-ItemProperty \"HKLM:\\Software\\Microsoft\\Microsoft SQL Server\\MSSQL14.MSSQLSERVER\\MSSQLServer\").PSObject.Properties.Name -contains \"DefaultData\""
not_if "(Get-ItemProperty \"HKLM:\\Software\\Microsoft\\Microsoft SQL Server\\MSSQL14.MSSQLSERVER\\MSSQLServer\").PSObject.Properties.Name -contains \"DefaultLog\""
not_if "(Get-ItemProperty \"HKLM:\\Software\\Microsoft\\Microsoft SQL Server\\MSSQL14.MSSQLSERVER\\MSSQLServer\").PSObject.Properties.Name -contains \"BackupDirectory\""
end
但是当我运行它时它无法运行:
* powershell_script[Configure Registry Keys] action run (skipped due to not_if)
这是因为其中一个键存在,而另外两个不存在。
如果其中任何一个键不存在,我希望创建这些键。似乎有多个 not_ifs,如果它们中的任何一个导致 $true 然后它被跳过。
我想要的是,如果其中任何一个返回 $false 然后执行。
我试图将我的 not_if 切换为 only_if 但这似乎有同样的问题(正好相反)
那么如何将多个 not_if 或 only_if 语句连接在一起,以便它们都必须返回 $false(或全部 $true - 取决于是否使用 only_if)
希望这是有道理的,但如果没有,请告诉我:)
【问题讨论】:
-
@theincorrigible1 我不确定这有什么帮助? (顺便说一句,我读过)。我什至没有在上述文档中看到任何支持多个“not_if”或“only_if”的迹象。 (我在其他地方发现了 - 通过谷歌搜索。)
标签: windows powershell chef-infra