diff --git a/library/windows/win_service b/library/windows/win_service index d26ee0840b2..c378be120b1 100644 --- a/library/windows/win_service +++ b/library/windows/win_service @@ -61,12 +61,12 @@ author: Chris Hoffman EXAMPLES = ''' # Restart a service win_service: - name: ncover + name: spooler state: restarted # Set service startup mode to auto and ensure it is started win_service: - name: ncover + name: spooler start_mode: auto state: started ''' diff --git a/library/windows/win_service.ps1 b/library/windows/win_service.ps1 index 535707d329d..70a3aa0005c 100644 --- a/library/windows/win_service.ps1 +++ b/library/windows/win_service.ps1 @@ -46,7 +46,7 @@ If ($params.start_mode) { $svcName = $params.name $svc = Get-Service -Name $svcName -ErrorAction SilentlyContinue If (-not $svc) { - Fail-Json $result "Service not installed" + Fail-Json $result "Service '$svcName' not installed" } If ($startMode) { @@ -60,15 +60,30 @@ If ($startMode) { If ($state) { If ($state -eq "started" -and $svc.Status -ne "Running") { - Start-Service -Name $svcName + try { + Start-Service -Name $svcName -ErrorAction Stop + } + catch { + Fail-Json $result $_.Exception.Message + } Set-Attr $result "changed" $true; } - ElseIf ($state -eq "stopped" -and $svcName -ne "Stopped") { - Stop-Service -Name $svcName + ElseIf ($state -eq "stopped" -and $svc.Status -ne "Stopped") { + try { + Stop-Service -Name $svcName -ErrorAction Stop + } + catch { + Fail-Json $result $_.Exception.Message + } Set-Attr $result "changed" $true; } ElseIf ($state -eq "restarted") { - Restart-Service -Name $svcName + try { + Restart-Service -Name $svcName -ErrorAction Stop + } + catch { + Fail-Json $result $_.Exception.Message + } Set-Attr $result "changed" $true; } }