Búsqueda de sitios web

SharePoint Online: restaurar la versión anterior de un documento usando PowerShell


Requisito: Restaurar la versión anterior de un documento en SharePoint Online.

¿Cómo restaurar una versión anterior de un documento o elemento en SharePoint Online?

Es posible que desee restaurar una versión anterior cuando los cambios se realizaron por error y necesite volver a un estado anterior. Para restaurar una versión anterior de un documento o elemento de lista, siga estos pasos:

  1. Navegue hasta su biblioteca de documentos de SharePoint Online, donde se encuentran los archivos que desea restaurar a la versión anterior.
  2. Vea el historial de versiones haciendo clic derecho en el archivo >> En el menú contextual emergente, elija el elemento de menú "Historial de versiones".
  3. Seleccione la versión para restaurar: en la página del historial de versiones, coloque el mouse sobre la fecha "Modificada" de la versión que desea restaurar y haga clic en el ícono de flecha para obtener su menú contextual.
  4. Haga clic en "Restaurar" y confirme el mensaje con Sí para restaurar la versión particular de un documento.

Es una buena idea ver/descargar la versión específica para asegurarse de que está restaurando la versión correcta. La operación de restauración de versión crea una nueva versión, lo que significa que nunca perderá ninguna versión mientras realiza este proceso.

SharePoint Online: restaurar una versión anterior de todos los elementos de una biblioteca de documentos mediante PowerShell

Si bien es sencillo y sencillo en SharePoint Online restaurar la versión anterior, restauremos la versión anterior de todos los documentos en una biblioteca de documentos con PowerShell.


#Import SharePoint Online module
Import-Module Microsoft.Online.SharePoint.Powershell

Function Restore-PreviousVersion()
{
  param
    (
        [Parameter(Mandatory=$true)] [string] $SiteURL,
        [Parameter(Mandatory=$true)] [string] $ListName
    )
   Try {
        $Cred= Get-Credential
        $Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Cred.Username, $Cred.Password)

        #Setup the context
        $Ctx = New-Object Microsoft.SharePoint.Client.ClientContext($SiteURL)
        $Ctx.Credentials = $Credentials
        
        #Get all items from the list/library
        $Query = [Microsoft.SharePoint.Client.CamlQuery]::CreateAllItemsQuery()
        $List = $Ctx.Web.Lists.GetByTitle($ListName)
        $Ctx.Load($List)
        $ListItems = $List.GetItems($Query)
        $Ctx.Load($ListItems)
        $Ctx.ExecuteQuery()

        #Iterate through each item and restore the previous version
        Foreach($Item in $ListItems)
        { 
            #Get the file versions
            $File = $Ctx.Web.GetFileByServerRelativeUrl($Item["FileRef"])
            $Ctx.Load($File)
            $Ctx.Load($File.Versions)
            $Ctx.ExecuteQuery()

            If($File.Versions.Count -gt 0)
            {
                #Get the previous version's label
                $VersionLabel=$File.Versions[($File.Versions.Count-1)].VersionLabel

                #Restore the previous version
                $File.Versions.RestoreByLabel($VersionLabel)
                $Ctx.ExecuteQuery()
                Write-Host -f Green "Previous version $VersionLabel Restored on :" $Item["FileRef"]
            }
            Else
            {
                Write-host "No Versions Available for "$Item["FileRef"] -f Yellow
            }
        }
     }
    Catch {
        write-host -f Red "Error Removing User from Group!" $_.Exception.Message
    }
} 

#Set parameter values
$SiteURL="https://crescent.sharepoint.com"
$ListName="Documents"

#Call the function to restore previous document version
Restore-PreviousVersion -SiteURL $SiteURL -ListName $ListName

Cuando restaura una versión anterior de un elemento de lista o documento, esa versión se convierte en la versión actual.

PnP PowerShell para restaurar versiones anteriores de un archivo

Para restaurar la versión anterior de un archivo, use el cmdlet Restore-PnPFileVersion:


#Parameters
$SiteURL = "https://crescent.sharepoint.com/sites/Retail"
$FileURL = "/sites/Retail/Shared Documents/Invoice-ID-022.xlsx" #Server Relative URL

#Connect to SharePoint Online Site
Connect-PnPOnline -Url $SiteURL -Interactive
 
#Remove previous version with version Label or ID 
Restore-PnPFileVersion -Url $FileURL -Identity "1.0" -Force

Esto puede resultar útil si sobrescribe accidentalmente un archivo o si necesita volver a una versión anterior de un documento. Utilice este script PnP PowerShell para restaurar versiones anteriores de todos los archivos en una biblioteca de documentos de SharePoint Online:


#Function to Restore Previous Versions of all Files in a Library
Function Restore-PreviousVersion
{
    [CmdletBinding()]
    Param
    (
        [Parameter(Mandatory=$true,ValueFromPipeline=$true)][Microsoft.SharePoint.Client.List]$Library
    )

    Begin
    {
        $BatchSize = 2000
        $global:Counter = 0
    }
    Process
    {
        #Get All Files from the Library in batches
        $AllItems = Get-PnPListItem -List $Library -PageSize $BatchSize -Fields ID -ScriptBlock { Param($items) $global:counter += $items.Count; `
                Write-Progress -PercentComplete ($global:Counter / ($Library.ItemCount) * 100) -Activity "Getting List Items of '$($_.Title)'" `
                     -Status "Processing Items $global:Counter to $($Library.ItemCount)";}  | Where {$_.FileSystemObjectType -eq "File"}
        Write-Progress -Activity "Completed Retrieving Items from List $($Library.Title)" -Completed
        
        #Process All Files from the Library
        $global:Counter = 1
        ForEach($Item in $AllItems)
        {
            #Get File and Versions from the List Item
            Get-PnPProperty -ClientObject $Item -Property File | Out-Null
            Get-PnPProperty -ClientObject $Item.File -Property Versions | Out-Null

            If($Item.File.Versions.Count -gt 0)
            {
                #Get the previous Version's Label
                $VersionLabel = $Item.File.Versions[$Item.File.Versions.Count-1].VersionLabel

                Write-Host "$(Get-Date) - ($($Counter)/$($AllItems.Count)) - Restoring version $VersionLabel for $($Item.File.Name)"
                $item.File.Versions.RestoreByLabel($VersionLabel)
                Invoke-PnPQuery
            }
            else
            {
                Write-Host "$(Get-Date) - ($($Counter)/$($AllItems.Count)) - Skipping $($Item.File.Name) as there are no previous versions!"
            }
            $Counter++
        }
    }
    end
    {
    }
}

#Set Parameters
$SiteURL = "https://crescent.sharepoint.com/sites/Projects"
$ListName = "Documents"

#Connect to SharePoint Online
Connect-PnPOnline -Url $SiteURL -Interactive

#Get the Library
$Library = Get-PnPList -Identity $ListName

#Call the function to Restore Previous Versions of all files
$Library | Restore-PreviousVersion

Restaurar versiones anteriores puede ayudarle a recuperar contenido perdido o eliminado y volver a versiones anteriores de documentos. Aquí está mi otra publicación para SharePoint On-Premises para restaurar la versión anterior de un archivo usando PowerShell: ¿Cómo restaurar la versión anterior de un archivo usando PowerShell?

Artículos relacionados