SharePoint PowerShell Timer Jobs

Avete mai pensato a quanto sarebbe utile poter pianificare l’esecuzione di script Powershell nel contensto della vostra farm SharePoint? Certo, è possibile utilizzare il Task Scheduler di Windows, ma per farlo è richiesto l’accesso al server e non sempre questo è possibile.

Qualche giorno fa ho letto di un progetto molto interessante, creato da Ingo Karstein e condiviso su Codeplex, che permette di creare Timer Jobs per l’esecuzione di script Powershell semplicemente da Central Administrator. Le possibilità di utilizzo sono molteplici, solo per citarne alcune: script di warm-up, backup, elaborazione/conversione documenti (via Word Automation Services), ecc…

Una volta effettuato il deploy della solution ed attivata la feature nella Central Administration, in System Settings troverete un nuovo gruppo: Ingo Karstein’s SharePoint PowerShell Timer Jobs.

System Settings

Le pagine a disposizione sono due, creazione/modifica/cancellazione dei Timer Jobs e history list dei job eseguiti. Le possibili schedulazioni sono le classiche dei Timer Jobs; altre impostazioni consentono di selezionare lo stato del job (attivo/non attivo), il server dove verrà eseguito e ovviamente il nome.

Crea nuovo Timer Job

Una volta definite queste caratteristiche sarà possibile scrivere (o meglio copiare) il nostro script PowerShell. Nel mio esempio ho schedulato, ogni notte alle 23:15, il backup di tutte le site collection. Anche se può sembrare ovvio vi segnalo che non potranno essere eseguiti script che richiedono l’interazione con l’utente (es. input o conferme).

PowerShell script editor

Un’altra caratteristica interessante di questo progetto è che i Timer Jobs creati li troviamo negli stessi elenchi dei Timer Jobs standard (ad esempio in Monitoring > Scheduled Jobs) e possiamo modificare la schedulazione, disattivarli o eseguirli a richiesta.

Scheduled JobsEdit Timer Job

Questo progetto è ancora in beta, al momento in versione 0.1.0.0. Nel caso decideste di utilizzarlo di effettuare prima tutti i test del caso nel vostro ambiente di test. Inoltre ricordo che, come tutti I progetti che si trovano su Codeplex, non è garantito alcun supporto e che eventuali correzioni e bug fixing sono legati alla buona volontà e alla disponibilità dei proprietari del progetto.

Detto questo, il progetto di Ingo mi piace moltissimo sia per cosa riguarda che per come è realizzato, così intregrato a livello di Central Admin. Sicuramente un progetto che seguirò e spero che si evolva, per lo meno, fino ad una versione stabile.

Questo è il link alla pagina del progetto: http://sppowershelltimerjob.codeplex.com/

Questo è il corrispondente post dal blog di Ingo: http://ikarstein.wordpress.com/2011/08/04/sharepoint-powershell-timer-jobs-run-powershell-scripts-in-sharepoint-timer-service-context/

-Riccardo