Top 5 des commandes PowerShell pour Microsoft Graph
Les seules commandes indispensables dans les modules Microsoft Graph
Un quota SharePoint permet de limiter l’espace de stockage alloué à un seul site SharePoint. Par défaut, un site SharePoint peut faire jusqu’à 25 TB ce qui est souvent suffisant pour consommer l’intégralité du stockage de votre tenant. Pour éviter la croissance incontrôlée de l’utilisation de votre espace SharePoint, il peut être intéressant de définir des quotas sur vos sites pour :
Vous pouvez très simplement le faire depuis la console d’administration SharePoint, comme indiqué dans la documentation officielle de Microsoft ou en PowerShell avec le module PnP.PowerShell.
Voici un exemple pour modifier le quota du site “Marketing” à 10 GB :
$url = "https://contoso.sharepoint.com/sites/marketing"
$quota = 10 * 1024
Set-PnPTenantSite -Identity $url -StorageQuota $quota
Le paramètre
-StorageQuotaattend une valeur en MB, c’est pour ça que l’on multiplie les 10 GB par 1024 dans notre variable$quota.
Pour changer la valeur de 25 TB maximum pour les nouveaux sites SharePoint, il y a deux étapes à suivre :
Ces deux paramètres ne sont pas rétroactifs, il faut donc repasser sur tous les autres sites du tenant pour appliquer un quota différent que les 25 TB par défaut.
On a vu comment modifier le quota d’un seul site et le quota par défaut pour les nouveaux sites, mais on souhaite désormais plafonner tous les sites existants sur notre tenant. Pour faire cela, on va encore utiliser le module PowerShell PnP.PowerShell et appliquer les quotas suivants :
On augmente la taille maximum par 5 entre chaque quota.
La première étape pour appliquer les quotas à grande échelle, c’est de savoir quel quota on va pouvoir appliquer à chaque site. Pour un site qui pèserait 100 GB, on va appliquer le quota de 250 GB par exemple.
On commence par se connecter sur le tenant à l’aide d’une application Azure. Si vous n’avez pas d’application Azure pour PnP, vous pouvez la créer à l’aide de cette documentation : Register an Entra ID Application to use with PnP PowerShell | PnP PowerShell.
$appSettings = @{
ClientId = '088a1da0-378b-4943-9374-925d408c82f2'
Url = 'https://contoso-admin.sharepoint.com/'
Interactive = $true
}
Connect-PnPOnline @appSettings
On récupère ensuite tous les sites du tenant (ce qui peut prendre plusieurs minutes si vous disposez de beaucoup de sites SharePoint) :
$sites = Get-PnPTenantSite
Il ne nous reste plus qu’à associer chaque site avec la taille de quota qui lui correspond. Voici quelques exemples du comportement attendu :
Les sites avec un quota personnalisé et un usage du stockage actuel de +200 GB ont été ignorés pour simplifier le script et éviter d’impacter des sites qui ont déjà été modifiés.
Voici le script pour faire l’analyse :
$report = $sites | Where-Object { $_.StorageQuota -eq 26214400 -and $_.StorageUsageCurrent -lt 200000 } | ForEach-Object {
$proposedQuota = if ([int]$_.StorageUsageCurrent / 1000 -lt 10) { 10 } # 10 GB
elseif ([int]$_.StorageUsageCurrent / 1000 -lt 50) { 50 } # 50 GB
elseif ([int]$_.StorageUsageCurrent / 1000 -lt 250) { 250 } # 250 GB
$quotaUsage = [math]::Round(($_.StorageUsageCurrent / 1000) / $proposedQuota * 100, 2)
[PSCustomObject]@{
Name = $_.Title
Url = $_.Url
StorageUsageCurrent = $_.StorageUsageCurrent / 1000
ProposedQuota = $proposedQuota
QuotaUsage = $quotaUsage
}
}
On peut afficher les résultats avec la commande suivante :
$report | Group-Object proposedQuota
Si un site occupe déjà 9 GB sur son quota de 10 GB, on arrive tout de suite à 90% d’utilisation ce qui n’est pas souhaitable. On va donc identifier tous les sites qui seront à +80% d’usage pour mesurer l’impact et prendre des mesures :
$report | Where-Object {$_.quotaUsage -gt 80} |
Sort-Object proposedQuota, quotaUsage |
Select-Object @{N='ShortURL';E={$_.Url -replace 'https://contoso.sharepoint.com', '...'}}, StorageUsageCurrent, ProposedQuota, QuotaUsage |
Format-Table -GroupBy proposedQuota
Il ne reste plus qu’à définir les nouveaux quotas sur tous les sites du tenant. En se basant sur le rapport précédent, on peut appliquer des quotas en fonction de l’usage actuel. Si l’usage du quota est à 80% ou plus, on passe automatiquement sur la tranche supérieure (10 GB vers 50 GB par exemple) :
$report | ForEach-Object {
Write-Host "Processing $($_.Name)" -ForegroundColor Yellow
$proposedQuota = $_.proposedQuota
if ($_.quotaUsage -gt 80) {
$proposedQuota = $proposedQuota * 5
Write-Host " The proposedQuota has been increased from $($_.proposedQuota) GB to $proposedQuota GB because the usage was above 80% ($($_.quotaUsage)%)"
}
$proposedQuota = $proposedQuota * 1024
Set-PnPTenantSite -Identity $_.Url -StorageQuota $proposedQuota
}
N’oubliez pas de traiter manuellement (ou en PowerShell) les sites de +200 GB qui ont été ignorés dans le processus.
Les seules commandes indispensables dans les modules Microsoft Graph