Wednesday, 14 January 2015

Powershell: Recusively Check In and Publish files in a SharePoint Document Library

I have combined the scripts from Paul King (here) and Brijendra Gautam (here) to create my own version of the script.

Function CheckInAndPublishFolderItemsRecusively( [Microsoft.SharePoint.SPFolder] $folder )
    # Create query object
    $query = New-Object Microsoft.SharePoint.SPQuery
    $query.Folder = $folder

    # Get SPWeb object
    $web = $folder.ParentWeb

    # Get SPList
    $list = $web.Lists[$folder.ParentListId]

    # Get a collection of items in the specified $folder
    $itemCollection = $list.GetItems($query)

    # Iterate through each item in the $folder
    foreach ($item in $itemCollection)
        # If the item is a folder
        if ($item.Folder -ne $null)
            # Call the Get-Items function recursively for the found sub-solder
            CheckInAndPublishFolderItemsRecusively $item.Folder
if ($item.File.Level -ne "Published")
           if ($item.File.CheckOutType -ne "None")
               if ($item.File.Versions.Count -eq 0)
                   # Check in the file
                    $item.File.CheckIn("Checked in By Administrator", [Microsoft.SharePoint.SPCheckinType]::MajorCheckIn)
$item.File.Publish('Published using Powershell')


    $web = $null

The script is invoked as follows:
$web = Get-SPWeb $siteUrl
$folder = $web.GetFolder("Style Library")
CheckInAndPublishFolderItemsRecusively $folder

No comments:

Post a comment