SCENARIO
For some reason, probably money, you can’t use a proper backup solution for your farm. So you want to use versioning as a cheap mans backup.
PROBLEM
Going through every document library in every site in every site collection in every application to enable versioning isn’t possible. And there is no way to specify in Central Administration or declare a policy to enforce this.
SOLUTION
This powershell script will do the trick for you. It’s written to enabling versioning for an entire web application (with easy alteration it can be scoped to a specific site/site collection). What’s neat about this is that it will not change settings on the document libraries that already have it enabled! It will not enable minor versioning, but you can just enable that if you want.
As always, use on your own risk and test in a test environment first and then scope it to a test site collection in production farm!!
Add-PSSnapin Microsoft.SharePoint.PowerShell -erroraction SilentlyContinue $webapp = "ENTER URL TO WEB APPLICATION" $site = get-spsite -Limit All -WebApplication $WebApp foreach($web in $site.AllWebs) { Write-Host "Inspecting " $web.Title foreach ($list in $web.Lists) { if($list.BaseType -eq "DocumentLibrary") { $liburl = $webapp + $list.DefaultViewUrl Write-Host "Library: " $liburl Write-Host "Versioning enabled: " $list.EnableVersioning Write-Host "MinorVersioning Enabled: " $list.EnableMinorVersions Write-Host "EnableModeration: " $list.EnableModeration Write-Host "Major Versions: " $list.MajorVersionLimit Write-Host "Minor Versions: " $list.MajorWithMinorVersionsLimit $host.UI.WriteLine() if(!$list.EnableVersioning) { $list.EnableVersioning = $true $list.EnableMinorVersions = $false # Set this to true if you want to enable minor versioning #$list.MajorVersionLimit = 10 # Remove comment hashtag and set this to the max amount of major versions you want #$list.MajorWithMinorVersionsLimit = 5 # Remove comment hashtag and set this to the max amount of minor versions you want $list.Update() } } } }
Credit goes to Amrita Talreja @ HCL for this post which is the basis for this Powershell script.