We have thousands and thousands of documents on sharepoint many of which are old and obsolete. I was wondering whether there was a tool that you can point at our intranet that will go through sharepoint and flag any documents that havent been modified since a certain date.


Within SharePoint you can create an information management policy.

An information management policy is a set of rules that govern the availability and behavior of a certain type of important content. Policy enables administrators to control and evaluate who can access information, how long to retain information, and how effectively people are complying with the policy. The most common creators and enforcers of policy are compliance officers, records managers, IT staff, and others who are responsible for managing risk.

For documents you can create retention policies in several ways:

  • You can create a retention policy definition within your site collection, then apply that policy to content types throughout the site.
  • You can create a retention policy that’s associated with a content type that’s defined in the root of the site collection.
  • You can create a retention policy that’s associated with a local content type that has been applied to a list or library.
  • You can create a retention policy directly on a list or library itself.

When creating a retention policy you can add stages. Within your stage you can say for example move all documents that are not modified within 1 year to the recycly bin or to a record center.

For example

Stage property

| improve this answer | |
  • its best to add retention policy in this case – Ravi Ranjan Feb 1 '14 at 13:46

None that I know of. However, you can run a powershell script (like this one) against your entire farm and export an inventory of your documents to a csv file. Opening it in Excel and filtering by date, as a first step you will be able to identify those that are older than a certain date. You might as well modify the script to move them somewhere else or delete them altogether.

Here's the script found in the aforementioned link:

function Get-DocInventory() {
    $farm = [Microsoft.SharePoint.Administration.SPFarm]::Local
    foreach ($spService in $farm.Services) {
        if (!($spService -is [Microsoft.SharePoint.Administration.SPWebService])) {

        foreach ($webApp in $spService.WebApplications) {
            if ($webApp -is [Microsoft.SharePoint.Administration.SPAdministrationWebApplication]) { continue }

            foreach ($site in $webApp.Sites) {
                foreach ($web in $site.AllWebs) {
                    foreach ($list in $web.Lists) {
                        if ($list.BaseType -ne "DocumentLibrary") {
                        foreach ($item in $list.Items) {
                            $data = @{
                                "Web Application" = $webApp.ToString()
                                "Site" = $site.Url
                                "Web" = $web.Url
                                "list" = $list.Title
                                "Item ID" = $item.ID
                                "Item URL" = $item.Url
                                "Item Title" = $item.Title
                                "Item Created" = $item["Created"]
                                "Item Modified" = $item["Modified"]
                                "File Size" = $item.File.Length/1KB
                            New-Object PSObject -Property $data
Get-DocInventory | Out-GridView
#Get-DocInventory | Export-Csv -NoTypeInformation -Path c:\inventory.csv
| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.