Friday, January 8, 2016

Force check-in of all items in a SharePoint 2013 Site Collection


if ((Get-PSSnapin | ? { $_.Name -eq "Microsoft.SharePoint.PowerShell" }) -eq $null) {

    Add-PSSnapin "Microsoft.SharePoint.PowerShell"

}



$RootWeb = Get-SPWeb http://dev.sharepoint.com/sites/somesite

#$webfilter = "http://dev.sharepoint.com/sites/somesite"

$webfilter = ""



$noiselists = @(

    "appdata";

    "wfpub";

    "Cache Profiles";

    "Composed Looks";

    "Content and Structure Reports";

    "Content type publishing error log";

    "Device Channels";

    "Form Templates";

    "List Template Gallery";

    "Long Running Operation Status";

    "Quick Deploy Items";

    "Notification List";

    "Master Page Gallery";

    "Style Library";

    "Relationships List";

    "Solution Gallery";

    "Suggested Content Browser Locations";

    "TaxonomyHiddenList";

    "Theme Gallery";

    "Translation Packages";

    "Translation Status";

    "User Information List";

    "Variation Labels";

    "Web Part Gallery";

    "Converted Forms";

    "Reusable Content";

    "Site Collection Documents";

    "Site Collection Images";

    "Suggested Content Browser Locations";

    "Access Requests";

)



function BrowseItems($list) {

    $listPrinted = $false

    foreach ($item in $list.Items) {

        $itemFile = $item.File



        if ($itemFile.CheckOutStatus -ne "None") {

            if ($listPrinted -ne $true) {

                $listPrinted = $true

                $currentURL = $list.parentweb.Url

                Write-Host "Checking URL $currentURL" -f yellow

                Write-Host "List " -f green -NoNewline

                Write-Host $list -f cyan -NoNewline

                Write-Host " has items checked out" -f green

            }

            $fileName = $itemFile.Name

            $userName = $itemFile.CheckedOutByUser.Name;

            Write-Host "Document $fileName is checked out by $userName" -f Magenta



            Write-Host "Doing automatic CheckIn on the item" -f green -NoNewline

            $itemFile.CheckIn("Automatic CheckIn. (Administrator)")

            Write-Host " Done!" -f Yellow

        }

    }

}



function BrowseLists($lists) {

    foreach($list in $lists) {

    #Write-Host "lists"

        if ($list.title -notin $noiselists) {

            if($list.EnableVersioning -eq $true) {

                BrowseItems $list

            }

        }

    }

}



function BrowseSubsites($webs) {

    foreach($web in $webs) {

    #Write-Host "subsites"

        if ($web.Url -like $webfilter + "*") {

            BrowseLists $web.lists

            BrowseSubsites $web.Webs

        }

    }

}



function ForceCheckIn() {

    $web = $RootWeb

    BrowseLists $web.lists

    BrowseSubsites $web.Webs

}





ForceCheckIn​

No comments:

Post a Comment