Office 365: Nettoyage des versions de List Item avant migration depuis SharePoint On Premise vers SharePoint Online
Pour ceux qui travaillent dans un projet de migration, un des cas critiques est l’utilisateur qui ne sait pas pourquoi, ni parfois comment, il a activé le versionning sans aucune limite.
On se retrouve alors avec des sites ou la seule liste en question peut occuper un volume très important sans aucun intérêt pour l’utilisateur (mais surtout très compliqué pour les outils de migration).
Dans mon exemple, les deux premiers fichiers excel occupent plus de 400MB, sachant que le fichier unitaire fait moins d’1MB:
Voici donc un petit script permettant de faire le ménage sur une liste spéficique en conservant les XX dernières versions:
function Delete-Version-History([string]$SPWebURL, [string]$SPListName, [int]$MaintainVersionNumber)
{
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint") > $nullWrite-Host " -------------------------------------------------------- "
Write-Host "SPWeb URL to configure:", $SPWebURL -foregroundcolor Red
$site = new-object Microsoft.SharePoint.SPSite($SPWebURL)
$web = $site.openweb()
Write-Host " >> SPWeb URL from Object:", $web.URL -foregroundcolor Green$SPlist = $web.Lists[$SPListName]
Write-Host " >> SPList to Configure:", $SPlist.Title -foregroundcolor Green
Write-Host " >> Total Item to check:", $SPlist.Items.Count -foregroundcolor Greenforeach ($SPitem in $SPlist.Items)
{
Write-Host " >>>>>> File Item:", $SPitem.Name, "- Version Total:", $SPItem.Versions.count -foregroundcolor Magenta
$currentVersionsCount = $SPItem.Versions.count
if($currentVersionsCount -gt $MaintainVersionNumber)
{
for($i=$currentVersionsCount-1; $i -gt $MaintainVersionNumber; $i--)
{
$SPItem.versions[$i].delete()
Write-Host " >>>>>> Version:", $i, " Deleted"$SPlist.Update();
}
}
}
$web.Dispose();
$site.Dispose();}
cls
Delete-Version-History http://MyWebApplication/sites/MySPSite/MySPWeb "My List Name" 50
Une fois les paramètres fournis, le script permettra de supprimer toutes les versions précédent la valeur limite fournie.
Cette solution est intéressante, mais parfois on a besoin de configurer le versionning et le faire appliquer dans la liste, pour ceci, le plus simple est de passer par ce second script:
function Configure-Versionning-SPList([string]$SPWebURL, [string]$SPListName, [int]$MaintainMajorVersionNumber, [bool]$EnableMinorVersionYesNo, [int]$MaintainMinorVersionNumber)
{
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint") > $nullWrite-Host " -------------------------------------------------------- "
Write-Host "SPWeb URL to configure:", $SPWebURL -foregroundcolor Red
$site = new-object Microsoft.SharePoint.SPSite($SPWebURL)
$web = $site.openweb()
Write-Host " >> SPWeb URL from Object:", $web.URL -foregroundcolor Green$SPlist = $web.Lists[$SPListName]
Write-Host " >> SPList to Configure:", $SPlist.Title -foregroundcolor Green
if($SPlist.EnableVersioning -eq $true)
{
$SPlist.MajorVersionLimit = $MaintainMajorVersionNumber;
if($EnableMinorVersionYesNo -eq $true)
{
$SPlist.EnableMinorVersions = $EnableMinorVersionYesNo
$SPlist.MajorWithMinorVersionsLimit = $MaintainMinorVersionNumber;
}
}
else
{
$SPlist.EnableVersioning = $True
$SPlist.MajorVersionLimit = $MaintainMajorVersionNumber;
if($EnableMinorVersionYesNo -eq $true)
{
$SPlist.EnableMinorVersions = $EnableMinorVersionYesNo
$SPlist.MajorWithMinorVersionsLimit = $MaintainMinorVersionNumber;
}
}
$SPlist.Update();
$web.Dispose();
$site.Dispose();
}function Force-Apply-Versionning-OnItems([string]$SPWebURL, [string]$SPListName, [int]$MaintainVersionNumber)
{
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint") > $nullWrite-Host " -------------------------------------------------------- "
Write-Host "SPWeb URL to configure:", $SPWebURL -foregroundcolor Red
$site = new-object Microsoft.SharePoint.SPSite($SPWebURL)
$web = $site.openweb()
Write-Host " >> SPWeb URL from Object:", $web.URL -foregroundcolor Green$SPlist = $web.Lists[$SPListName]
Write-Host " >> SPList to Configure:", $SPlist.Title -foregroundcolor Green
Write-Host " >> Total Item to check:", $SPlist.Items.Count -foregroundcolor Greenforeach ($SPitem in $SPlist.Items)
{
Write-Host " >>>>>> File Item:", $SPitem.Name, "- Version Total:", $SPItem.Versions.count -foregroundcolor Magenta
$currentVersionsCount = $SPItem.Versions.count
if($currentVersionsCount -gt $MaintainVersionNumber)
{
$SPitem.SystemUpdate()
}
}
$SPlist.Update();
$web.Dispose();
$site.Dispose();}
Configure-Versionning-SPList http://MyWebApplication/sites/MySPSite/MySPWeb "My List Name" 50 $false 0
Force-Apply-Versionning-OnItems http://MyWebApplication/sites/MySPSite/MySPWeb "My List Name" 50
Quelque soit votre choix, le principe reste toujours de nettoyer avant de lancer l’exécution de migration.
Romelard Fabrice [MBA Risk Management]
Source:
- http://salaudeen.blogspot.co.uk/2011/01/limitcleanup-versioning-in-sharepoint.html
- https://social.technet.microsoft.com/Forums/ie/en-US/53694860-2a7c-4bfb-ba1f-3b8b17c031b9/sharepoint-2007-document-library-deleting-all-versions-in-bulk?forum=sharepointadminlegacy
- http://crashcarr.com/22/22
- http://www.sharepointdiary.com/2011/01/limit-versioning-and-delete-old-versions-in-sharepoint.html#ixzz4pAZ0epuO
Commentaires
Enregistrer un commentaire