If one of Microsoft SharePoint Foundation Timer in Offline status when deploy will fail.
To check status use Powershell
Add-PSSnapin Microsoft.SharePoint.PowerShell
$servers = Get-SPServer | Where{$_.Role –ne "Invalid"}
foreach($server in $servers)
{
$serverName = $server.DisplayName
$serverRole = $server.Role
Write-Host "$serverName - ROLE: $serverRole" -ForegroundColor "Black" -BackgroundColor "Yellow"
$servicesRunning = $server.ServiceInstances | Where{$_.Status –eq "Online" –and $_.Hidden –eq $False}
Write-Host "SharePoint Services Running:" -ForegroundColor "Blue" -BackgroundColor "White"
$servicesRunning | Select TypeName
Write-Host "`n"
}If one of server does not contain Microsoft SharePoint Foundation Timer you should start it using Powershell
Add-PSSnapin Microsoft.SharePoint.PowerShell
$farm = Get-SPFarm
$disabledTimers = $farm.TimerService.Instances | where {$_.Status -ne "Online"}
if ($disabledTimers -ne $null)
{
foreach ($timer in $disabledTimers)
{
Write-Host "Timer service instance on server " $timer.Server.Name " is not Online. Current status:" $timer.Status
Write-Host "Attempting to set the status of the service instance to online"
$timer.Provision()
$timer.Start()
Write-Host -ForegroundColor Red "You MUST now go restart the SharePoint timer service on server " $timer.Server.Name
}
}
else
{
Write-Host "All Timer Service Instances in the farm are online! No problems found"
}Note: You MUST now go restart the SharePoint timer service on each server where problem found.