使用 puppet exec 检测 windows 服务是否已经安装
Detecting if windows service is already installed using puppet exec
我有以下 exec
资源,用于安装 window 服务。
我希望它仅在未安装 window 服务时执行。所以我使用 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 }",
我有以下 exec
资源,用于安装 window 服务。
我希望它仅在未安装 window 服务时执行。所以我使用 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 }",