Prérequis
- Administrateur SharePoint
- App Registration avec Sites.FullControl.All sur la GraphAPI et SharePoint.
Actions
Le script ci dessous permet de purger l’ensmeble des site SharePoint concernant la corbeille du premier niveau. Scipt :Copy
$ClientID = {ClientID}
$Passcert = ConvertTo-SecureString {PasswordCertificate} -AsPlainText
$pfxPath = {PathCertificatePFX}
$Path = {PathExecution}
Start-Transcript -Path $($Path + "ActionsDeleted_$((Get-Date).ToString('yyyyMMdd_HH')).log") -Append
# Variables pour se connecter sur l'APP Registration avec des droits Sites.FullControl.
$adminUrl = {AdminURL}
# 1ere connexion pour récupérer tous les sites SharePoint en me basant sur mes droits nominatifs.
Connect-PnPOnline -Url $adminUrl -Interactive -ClientId $ClientID -WarningAction Ignor
$sites = Get-PnPTenantSite | ? {$_.Url -like "*$($adminUrl)/sites*"}
$AllSize = 0
# 2eme connexion sur chaque site pour effectuer une purge.
Foreach ($s in $sites)
{
Write-Host "$($s.Url)" -ForegroundColor Yellow
Connect-PnPOnline -Url $s.Url -ClientId $ClientID -CertificatePassword $Passcert -CertificatePath $pfxPath -Tenant {TenantName.onmicrosoft.com}
Get-PnPRecycleBinItem -RowLimit 10000 | Select-object Title, Id, DirName, Size | Format-List
$AllSize = $AllSize + (Get-PnPRecycleBinItem -RowLimit 10000 | Measure-Object -Property Size -Sum).Sum
Write-Host "Removing in doing" -ForegroundColor "Red"
While( $null -ne (Get-PnPRecycleBinItem -RowLimit 500))
{
Get-PnPRecycleBinItem -RowLimit 500 | Clear-PnPRecycleBinItem -Force
}
}
[PSCustomObject]@{
TotalBytes = $AllSize
TotalMB = [math]::Round($AllSize / 1MB, 2)
TotalGB = [math]::Round($AllSize / 1GB, 3)
}
# Déconnexion.
Disconnect-PnPOnline -ClearPersistedLogin