Eliminacion de historial de versiones OneDrive
Última modificación: 16 julio 2024 04:47 p. m.

Con el historial de versiones podemos ver y restaurar versiones anteriores de archivos de colaboración (word, excel, power point) y algunos otros tipos. Pero también vamos a encontrar que ese historial de versiones ocupa espacio por lo que si el archivo es muy grande el historial de versiones también. Por ejemplo, tenemos un archivo con un peso de 1.8 GB; al editarlo este crea otra versión o versiones con el mismo peso, por lo que al ir sumando si tenemos 100 versiones este ya ocupara gran cantidad de espacio. En este articulo se muestra como eliminar esto via PNP de SharePoint para que podamos eliminar el historial de versiones que se almacenan en la carpeta de documentos del usuario.

Comenzamos primero y opcionalmente verificando cuanto historial de versiones tenemos con las siguientes sintaxis.

#Set Variables
$SiteURL = "https://verbienorgmx-my.sharepoint.com/personal/conypalos_verbien_org_mx/VERBIEN"
$LibraryName = "Documents"
$CSVPath = "C:\Temp\VersionHistoryRpt.csv"

nos conectamos al Onedrive con el siguiente comando.

Connect-PnPOnline -Url https://verbienorgmx-my.sharepoint.com/personal/conypalos_verbien_org_mx -UseWebLogin

utilizamos el usuario de administración del tenant para iniciar sesión y ejecutar la acción.

por último; copiamos tal cual el siguiente fragmento de Código.

$VersionHistoryData = @()
#Iterate through all files
Get-PnPListItem -List $LibraryName -PageSize 500 | Where {$_.FieldValues.FileLeafRef -like "*.*"} | ForEach-Object {
Write-host "Getting Versioning Data of the File:"$_.FieldValues.FileRef
#Get FileSize & version Size
$FileSizeinKB = [Math]::Round(($_.FieldValues.File_x0020_Size/1KB),2)
$File = Get-PnPProperty -ClientObject $_ -Property File
$Versions = Get-PnPProperty -ClientObject $File -Property Versions
$VersionSize = $Versions | Measure-Object -Property Size -Sum | Select-Object -expand Sum
$VersionSizeinKB = [Math]::Round(($VersionSize/1KB),2)
$TotalFileSizeKB = [Math]::Round(($FileSizeinKB + $VersionSizeinKB),2)

#Extract Version History data
$VersionHistoryData+=New-Object PSObject -Property ([Ordered]@{
"File Name" = $_.FieldValues.FileLeafRef
"File URL" = $_.FieldValues.FileRef
"Versions" = $Versions.Count
"File Size (KB)" = $FileSizeinKB
"Version Size (KB)" = $VersionSizeinKB
"Total File Size (KB)" = $TotalFileSizeKB
})
}
$VersionHistoryData | Format-table -AutoSize
$VersionHistoryData | Export-Csv -Path $CSVPath -NoTypeInformation

una vez que termine nos arrojara un archivo CSV donde podremos visualizar algo como lo siguiente.

una vez validado el archivo podemos proceder con la eliminacion con las siguientes sintaxis.

#Config Variables
$SiteURL = "https://monroechemical0-my.sharepoint.com/personal/momcommunity_monroedistribucion_com"
$ListName="Documentos"
$VersionsToKeep = 5

importante definir las versiones a mantener. Por buenas prácticas se recomienda las ultima 5 pero si lo desea el cliente se puede dejar un mínimo de 2

Iniciamos sesión con el siguiente comando.

Connect-PnPOnline -Url "https://monroechemical0-my.sharepoint.com/personal/momcommunity_monroedistribucion_com" -UseWebLogin

Nuevamente utilizamos el usuario de administración del tenant para iniciar sesion y ejecutar.

posteriormente pegamos y pegamos tal cual el siguiente fragmento.

#Get the Context
$Ctx= Get-PnPContext

#Get All Items from the List - Exclude 'Folder' List Items
$ListItems = Get-PnPListItem -List $ListName -PageSize 5000 | Where {$_.FileSystemObjectType -eq "File"}

##################
$ListItems = Get-PnPListItem -List $ListName -FolderServerRelativeUrl $FolderServerRelativeURL -PageSize 2000
###################

ForEach ($Item in $ListItems)
{
#Get File Versions
$File = $Item.File
$Versions = $File.Versions
$Ctx.Load($File)
$Ctx.Load($Versions)
$Ctx.ExecuteQuery()

Write-host -f Yellow "Scanning File:"$File.Name
$VersionsCount = $Versions.Count
$VersionsToDelete = $VersionsCount - $VersionsToKeep
If($VersionsToDelete -gt 0)
{
write-host -f Cyan "`t Total Number of Versions of the File:" $VersionsCount
#Delete versions
For($i=0; $i -lt $VersionsToDelete; $i++)
{
write-host -f Cyan "`t Deleting Version:" $Versions[0].VersionLabel
$Versions[0].DeleteObject()
}
$Ctx.ExecuteQuery()
Write-Host -f Green "`t Version History is cleaned for the File:"$File.Name
}
}

se ejecutará la eliminación del versionado solo dejando las ultimas 5 versiones del archivo. Con esto aseguramos más espacio de almacenamiento. Al ejecutar observaremos algo como lo siguiente.

Escanea cada 1 de los archivos existentes dentro de OneDrive en búsqueda de historial de versiones.

si se encuentra visualizaremos en otro color la eliminación del historial como se observa en la siguiente imagen.

en algunos archivos que no se pueden leer veremos algunos errores como lo siguiente.

pero la eliminación no se detiene. Lo pasa y continua hasta terminar con la instrucción.

(0 voto(s))
Útil
No útil

Comentarios (0)
Publicar un nuevo comentario
 
 
Nombre completo:
Correo electrónico:
Comentarios:
Verificación CAPTCHA 
 
Por favor, introduzca el texto que ve en la imagen en el cuadro de texto de abajo.