4

我有以下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 }
4

1 回答 1

2

为什么要先使用服务名称检索服务,然后再比较显示名称?您可能可以省略该检查...

另外,您不想在exit 0安装服务时退出,否则退出1

试试这个:

onlyif    => "if(Get-Service ${service_name}) { exit 0 } else { exit 1 }",
于 2016-06-08T12:55:18.463 回答