Install a custom timer job in Powershell
By Anatoly Mironov
First we have to create a class for our timer job which inherits SPTimerJobDefinition, build it and deploy it.
public class TakanaTimer : SPJobDefinition
{
public TakanaTimer(){}
public TakanaTimer(string jobName, SPService service,
SPServer server, SPJobLockType targetType)
: base(jobName, service, server, targetType) { }
public TakanaTimer(string jobName, SPWebApplication webapp)
: base(jobName, webapp, null, SPJobLockType.ContentDatabase)
{
Title = jobName;
}
public override void Execute(Guid contentDbId)
{
Log.Info("Running Takana Timer");
}
}
There is a powershell example for this, but it has not been updated since MOSS.
In Powershell we need to load our custom assembly into powershell session:
\[Reflection.Assembly\]::LoadWithPartialName("Takana.Sharepoint.Timer")
$app = get-spwebapplication http://takana
$name = "takana-timer"
$job = new-object Takana.Sharepoint.Timer.TakanaTimer($name, $app)
$job.Schedule = \[Microsoft.SharePoint.SPSchedule\]::FromString("Every 15 minutes between 0 and 59")
$job.update()
#must restart timer service
restart-service sptimerv4
The cool thing here is also that we can create schedule from a text. The code is partially inspired by maraboustork
To remove a Timer Job, get the id of your timer job and run stsadm:
#Get the GUID of the timer job definition with the following cmdlet:
get-sptimerjob | sort-object -property Name | ft Name, Id
stsadm.exe -o deleteconfigurationobject -id
Or even better:
Get-SPTimerJob | where { $\_.name -like “\*\*” } |ft id,name
#Set job to a variable
$job = Get-SPTimerJob -id
#And delete it.
$job.Delete()
By the way, the whole list of ootb timers.
Comments from Wordpress.com
tomvangaever - Jan 2, 2013
http://tomvangaever.be/blogv2/2011/08/sharepoint-2010-custom-timerjob-installation-with-powershell/ and http://technet.microsoft.com/en-us/library/ee906546.aspx Kind regards Tom