Update Sharepoint/SP-keep-lastNVersions.ps1
This commit is contained in:
@@ -1,32 +1,37 @@
|
|||||||
#Config Parameters
|
if($args[0] -eq $null)
|
||||||
$SiteURL = Read-Host -Prompt "Entrez l'adresse du site Sharepoint"
|
{
|
||||||
$VersionsToKeep = 5
|
$pnpCiD = Read-Host "Votre Client ID (ex: fa7800b5-0298-4205-a369-ffb976de3058) "
|
||||||
|
$SiteURL = Read-Host "Adresse du site (ex: https://client.sharepoint.com/sites/COMPTA) "
|
||||||
|
$ListName = Read-Host "Nom de la bibliotheque (ex: Documents) "
|
||||||
|
$VersionsToKeep = Read-Host "Nombre de versions à garder "
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$pnpCiD=$args[0]
|
||||||
|
$SiteURL=$args[1]
|
||||||
|
$ListName=$args[2]
|
||||||
|
$VersionsToKeep=$args[3]
|
||||||
|
}
|
||||||
|
|
||||||
Try {
|
Connect-PnPOnline -Url $SiteURL -Interactive -ClientId $pnpCiD
|
||||||
#Connect to PnP Online
|
|
||||||
Connect-PnPOnline -Url $SiteURL -Interactive
|
|
||||||
|
|
||||||
#Get the Context
|
#Get the Document Library
|
||||||
$Ctx= Get-PnPContext
|
$List = Get-PnPList -Identity $ListName
|
||||||
|
|
||||||
#Exclude certain libraries
|
#Get the Context
|
||||||
$ExcludedLists = @("Form Templates", "Preservation Hold Library","Site Assets", "Pages", "Site Pages", "Images",
|
$Ctx= Get-PnPContext
|
||||||
"Site Collection Documents", "Site Collection Images","Style Library")
|
|
||||||
|
|
||||||
#Get All document libraries
|
$global:counter=0
|
||||||
$DocumentLibraries = Get-PnPList | Where-Object {$_.BaseType -eq "DocumentLibrary" -and $_.Title -notin $ExcludedLists -and $_.Hidden -eq $false}
|
#Get All Items from the List - Get 'Files
|
||||||
|
$ListItems = Get-PnPListItem -List $ListName -Fields FileLeafRef -PageSize 2000 -ScriptBlock { Param($items) $global:counter += $items.Count; Write-Progress `
|
||||||
|
-PercentComplete ($global:Counter / ($List.ItemCount) * 100) -Activity "Getting Files of '$($List.Title)'" `
|
||||||
|
-Status "Processing Files $global:Counter of $($List.ItemCount)";} | Where {($_.FileSystemObjectType -eq "File")}
|
||||||
|
Write-Progress -Activity "Completed Retrieving Files!" -Completed
|
||||||
|
|
||||||
#Iterate through each document library
|
$TotalFiles = $ListItems.count
|
||||||
ForEach($Library in $DocumentLibraries)
|
$Counter = 1
|
||||||
{
|
ForEach ($Item in $ListItems)
|
||||||
Write-host "Processing Document Library:"$Library.Title -f Magenta
|
{
|
||||||
|
|
||||||
#Get All Items from the List - Exclude 'Folder' List Items
|
|
||||||
$ListItems = Get-PnPListItem -List $Library -PageSize 2000 | Where {$_.FileSystemObjectType -eq "File"}
|
|
||||||
|
|
||||||
#Loop through each file
|
|
||||||
ForEach ($Item in $ListItems)
|
|
||||||
{
|
|
||||||
#Get File Versions
|
#Get File Versions
|
||||||
$File = $Item.File
|
$File = $Item.File
|
||||||
$Versions = $File.Versions
|
$Versions = $File.Versions
|
||||||
@@ -34,7 +39,7 @@ Try {
|
|||||||
$Ctx.Load($Versions)
|
$Ctx.Load($Versions)
|
||||||
$Ctx.ExecuteQuery()
|
$Ctx.ExecuteQuery()
|
||||||
|
|
||||||
Write-host -f Yellow "`tScanning File:"$File.Name
|
Write-host -f Yellow "Scanning File ($Counter of $TotalFiles):"$Item.FieldValues.FileRef
|
||||||
$VersionsCount = $Versions.Count
|
$VersionsCount = $Versions.Count
|
||||||
$VersionsToDelete = $VersionsCount - $VersionsToKeep
|
$VersionsToDelete = $VersionsCount - $VersionsToKeep
|
||||||
If($VersionsToDelete -gt 0)
|
If($VersionsToDelete -gt 0)
|
||||||
@@ -47,7 +52,7 @@ Try {
|
|||||||
If($Versions[$VersionCounter].IsCurrentVersion)
|
If($Versions[$VersionCounter].IsCurrentVersion)
|
||||||
{
|
{
|
||||||
$VersionCounter++
|
$VersionCounter++
|
||||||
Write-host -f Magenta "`t`t Retaining Current Major Version:"$Versions[$VersionCounter].VersionLabel
|
Write-host -f Magenta "`t`t Retaining Current Major Version:" $Versions[$VersionCounter].VersionLabel
|
||||||
Continue
|
Continue
|
||||||
}
|
}
|
||||||
Write-host -f Cyan "`t Deleting Version:" $Versions[$VersionCounter].VersionLabel
|
Write-host -f Cyan "`t Deleting Version:" $Versions[$VersionCounter].VersionLabel
|
||||||
@@ -56,9 +61,5 @@ Try {
|
|||||||
$Ctx.ExecuteQuery()
|
$Ctx.ExecuteQuery()
|
||||||
Write-Host -f Green "`t Version History is cleaned for the File:"$File.Name
|
Write-Host -f Green "`t Version History is cleaned for the File:"$File.Name
|
||||||
}
|
}
|
||||||
}
|
$Counter++
|
||||||
}
|
|
||||||
}
|
|
||||||
Catch {
|
|
||||||
write-host -f Red "Error Cleaning up Version History!" $_.Exception.Message
|
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user