Home » Customization » Execute PowerShell Scripts in Scheduled Tasks using Sitecore PowerShell Extensions

Execute PowerShell Scripts in Scheduled Tasks using Sitecore PowerShell Extensions

Sitecore Technology MVP 2016
Sitecore MVP 2015
Sitecore MVP 2014

Enter your email address to follow this blog and receive notifications of new posts by email.

At the Sitecore User Group Conference 2014, I demonstrated how to invoke PowerShell scripts in a Sitecore Scheduled Task using Sitecore PowerShell Extensions, and felt I should pen what I had shown in a blog post — yes, you guessed it: this is that blog post. 😉

In my presentation, I shared the following PowerShell script with the audience:

ForEach($site in [Sitecore.Configuration.Factory]::GetSiteNames()) {
    $siteInfo = [Sitecore.Configuration.Factory]::GetSiteInfo($site)
    if($siteInfo -ne $null) {
         $siteInfo.HtmlCache.Clear()   
         $logEntry = [string]::Format("HtmlCache.Clear() invoked for {0}", $siteInfo.Name)
         Write-Log $logEntry
    }
}

The script above iterates over all sites in your Sitecore instance, clears the Html Cache for each, and creates log entries expressing the Html Cache was cleared for all sites processed.

You would probably never have to use a script like the one above. I only wrote it for demonstration purposes since I couldn’t think of a more practical example to show. If you can think of any practical examples, or feel the script above has some practicality, please share in a comment.

I wrote, tested, and saved the above script in the PowerShell ISE:

powershell-ise-task

The PowerShell script was saved to a new Item created by the dialog above:

task-location-script-library

I then created a Schedule Item to invoke the script housed in the Item above (to learn more about Sitecore Scheduled Tasks, please see John West‘s post discussing them):

create-schedule-item-spe

I saved my Item, waited a bit, and opened up my latest Sitecore log file:

html-cache-clear-spe

As you can see, the Html Cache was cleared for each site in my Sitecore instance.

If you have any questions/comments/thoughts on this, please drop a comment.


6 Comments

  1. michaellwest says:

    Great article. Tip: You can use the if statement without -ne $null since the behavior is similar to Javascript’s truthy logic.

  2. michaellwest says:

    Great article Mike. Try removing the -ne $null for a simplified condition.

  3. Great article!
    Some sample scenarios I could think off the top of my head could be:
    – copying old log files to an external drive
    – zip old log files
    – archiving old versions of items
    – publishing blog articles at their scheduled date.
    – cleaning up unlinked media items that are not in workflow.
    – unlocking items for not logged in users
    I think you can find a lot of samples just by looking at your blog 😉

Comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.