我有用于安装窗口服务的下面的exec
资源。
我希望它只有在没有安装窗口服务的情况下才能执行。 所以我使用onlyif
命令,但命令不起作用。 它一直在运行安装:
exec { "install-${target_path}/${binary_name}": command => "${installUtil_filepath} /i /servicename=\"${service_name}\" /displayname=\"${display_name}\" /description=\"${description}\" \"${target_path}\\${binary_name}\"", onlyif => "if((Get-Service \"${service_name}\" -ErrorAction SilentContinue).DisplayName -eq ${display_name}) { exit 1 } else { exit 0 }", logoutput => true, provider => powershell, }
这工作
if(Get-Service \"${service_name}\") { exit 1 } else { exit 0 }
你为什么首先使用服务名称来检索服务,然后比较显示名称? 你大概可以省略那个检查…
另外,你不想exit 0
服务安装时,否则1
?
尝试这个:
onlyif => "if(Get-Service ${service_name}) { exit 0 } else { exit 1 }",