2016-06-08 143 views
4

我有下面的exec資源,它用於安裝窗口服務。檢測是否已經使用puppet exec安裝了windows服務

我希望它只有在未安裝窗口服務時才能執行。所以我使用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 } 

回答

1

爲什麼你第一次使用該服務的名稱retrive服務,然後也比較顯示名稱?您可能會忽略該檢查...

另外,您是否想要在安裝服務時以exit 0退出,否則請用1退出?

試試這個:

onlyif => "if(Get-Service ${service_name}) { exit 0 } else { exit 1 }", 
+1

由於這個工作。 if(Get-Service \「$ {service_name} \」){exit 1} else {exit 0} – Praneeth

相關問題