SharePoint Online: ¿Cómo aprobar varios documentos usando PowerShell?
Requisito: Aprobar varios documentos en SharePoint Online mediante PowerShell.
PowerShell es una herramienta poderosa que puede ayudarlo a automatizar tareas comunes en SharePoint Online. En esta publicación de blog, le mostraremos cómo aprobar varios documentos al mismo tiempo en SharePoint Online usando PowerShell. Este puede ser un consejo útil para ahorrar tiempo si necesita aprobar una gran cantidad de documentos.
¿Cómo aprobar varios elementos en SharePoint Online?
Cuando la aprobación de contenido está activada, cada elemento debe aprobarse para que sea visible para los usuarios. Puede aprobar cualquier elemento o documento en SharePoint Online haciendo clic derecho en el documento >> Haga clic en Más >> Aprobar/Rechazar >> Haga clic en “Aprobar”.
Aprobar documentos en SharePoint Online puede ser un proceso que requiere mucho tiempo, especialmente cuando tiene una gran cantidad de documentos para revisar. Afortunadamente, SharePoint proporciona una forma de aprobar varios documentos a la vez mediante la función de aprobación masiva.
Para aprobar varios elementos, puede seleccionar más de un elemento y hacer clic en el botón "Aprobar/Rechazar" en la barra de comandos o en el menú contextual.
Aprobar un documento de SharePoint Online mediante PowerShell:
Aprobemos un solo archivo en SharePoint Online usando PowerShell:
#Load SharePoint CSOM Assemblies
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.dll"
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.Runtime.dll"
#Parameters
$SiteURL = "https://Crescent.sharepoint.com"
$FileRelativeURL ="/Shared Documents/Compliance Process.xlsx"
$ApprovalComments= "Approved by the Admin"
#Get credentials to connect
$Cred = Get-Credential
#Setup the Context
$Ctx = New-Object Microsoft.SharePoint.Client.ClientContext($SiteURL)
$Ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Cred.UserName, $Cred.Password)
#Get the File and Approve
$File = $Ctx.Web.GetFileByServerRelativeUrl($FileRelativeURL)
$File.Approve($ApprovalComments)
$Ctx.ExecuteQuery()
Write-Host -f Green "File Approved Successfully!"
De manera similar, para rechazar un archivo, use: $File.Deny($Comment). Podemos usar el script de PowerShell para aprobar varios elementos en SharePoint Online.
SharePoint Online: aprobar varios documentos mediante PowerShell
Aprobemos todos los elementos pendientes en una lista o biblioteca de documentos usando PowerShell:
#Load SharePoint CSOM Assemblies
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.dll"
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.Runtime.dll"
#Parameters
$SiteURL = "https://Crescent.sharepoint.com"
$ListName ="Documents"
#Get credentials to connect
$Cred = Get-Credential
#Setup the Context
$Ctx = New-Object Microsoft.SharePoint.Client.ClientContext($SiteURL)
$Ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Cred.UserName, $Cred.Password)
#Get the File and Approve
$List = $Ctx.web.Lists.GetByTitle($ListName)
#Query to get all items with status other than "Approved"
$Query = New-Object Microsoft.SharePoint.Client.CamlQuery
$Query.ViewXml = "<View Scope = 'RecursiveAll'><Query><Where><Neq><FieldRef Name='_ModerationStatus' /><Value Type='ModStat'>0</Value></Neq></Where></Query></View>"
$ListItems = $List.GetItems($Query)
$Ctx.Load($ListItems)
$Ctx.ExecuteQuery()
#Approve all pending List Items
ForEach($Item in $ListItems)
{
$Item["_ModerationStatus"] = 0
$Item.Update()
$Ctx.ExecuteQuery()
Write-host -f Green "Approved List Item:" $Item.Id
}
PnP PowerShell para aprobar todos los archivos en una biblioteca de documentos
Para aprobar todos los archivos en una biblioteca de documentos de SharePoint Online, use este script de PowerShell:
#Parameters
$SiteURL = "https://Crescent.sharepoint.com/sites/marketing"
$ListName = "Branding"
#Connect to PnP Online
Connect-PnPOnline -Url $SiteURL -Interactive
#Get All Files in Draft State
$DraftItems = Get-PnPListItem -List $ListName -PageSize 2000 | Where {$_.FileSystemObjectType -eq "File" -and $_["_ModerationStatus"] -ne 0}
#Approve Files
$DraftItems | ForEach-Object {
Set-PnPListItem -List $ListName -Identity $_ -Values @{"_ModerationStatus"=0;"_ModerationComments"="Approved by Script"} | Out-Null
Write-host "Approved File:"$_.FieldValues.FileRef
}
Aquí, el campo de estado de moderación tiene estas enumeraciones:
- Aprobado: 0
- Rechazado: 1
- Pendiente: 2
- Borrador: 3
- Programado: 4

