SharePoint – Größe je Inhaltsdatenbank mit PowerShell prüfen

04.05.2018 0 Von Frank

In allen OnPremise SharePoint-Umgebungen bietet es sich aufgrund der empfohlenen maximalen Größe je Inhaltsdatenbank an, eine regelmäßige Überwachung durchzuführen.
So kann man frühzeitig tätig werden, wenn eine Inhaltsdatenbank ein bestimmtes Limit erreicht und z.B. SiteCollections in neue Datenbanken auslagern.
Für SharePoint 2013 beträgt das empfohlene Limit für normale Inhaltsdatenbanken 200 GB.

Als Parameter ($cdbSizelimit) kann man die Größe anpassen, ab der das Skript eine Warnung ausgibt.

Am Ende des Skripts wird noch die Gesamtzahl aller Inhaltsdatenbanken und die Gesamtgröße ausgegeben.

# Autor: Frank Grim
# Version 1.2
# Beschreibung: Liefert die Groessen der SharePoint-Inhaltsdatenbanken 

if((Get-PSSnapin -Name microsoft.sharepoint.powershell -ErrorAction SilentlyContinue) -eq $null) {
  Add-PSSnapin microsoft.sharepoint.powershell
}

$cdbSizelimit = 100000000000 #Bytes (=100GB)

$datum = Get-Date -Format "dd.MM.yyyy HH:mm:ss"
$lbreak = "r"

#Gesamtgroesse der Inhaltsdatenbanken auslesen (NUR INHALTSDATENBANKEN)
$size = 0
foreach ($db in Get-SPContentDatabase) {
    $size = $size + $db.DiskSizeRequired
}
$cdbs = "{0:N2}" -f($size/1gb) 

#Groessen aller SP-Datenbanken auslesen
$dbs = Get-SPDatabase

write-host "--------------------------------------------------------------------------------------" -fore green
write-host "                        Auswertung - Inhaltsdatenbankgroesse"
write-host $datum
write-host "--------------------------------------------------------------------------------------" -fore green

$sum_all_dbs = 0
foreach ($db in $dbs) {
  write-host $db.name "DB Size in GB: " -NoNewline -fore White
  $dsr = "{0:N2}" -f ($db.DiskSizeRequired/1gb)
  if($db.typename -eq "Content Database") {
    write-host $dsr "in"$db.sites.count "Site(s)" -fore Yellow
  }
  else {
    write-host $dsr -fore Yellow
  }
  $sum_all_dbs=$sum_all_dbs+$db.DiskSizeRequired
   
  if($db.DiskSizeRequired -gt $cdbSizelimit -AND $db.typename -eq "Content Database") {
    $text = $db.name+"DB Size in GB: "+$dsr
    $text_cdb = $text_cdb + $lbreak + $text
  }
}

write-host "--------------------------------------------------------------------------------------" -fore green
write-host "SUM: Alle ContentDB in Summe: " -NoNewline -fore White
write-host $cdbs -fore Yellow
write-host "SUM: Alle SharePoint-DB in Summe: " -NoNewline -fore White
$sum_all_dbs = "{0:N2}" -f ($sum_all_dbs/1gb)
write-host $sum_all_dbs -fore Yellow
write-host "--------------------------------------------------------------------------------------" -fore green
write-host "Infos:" $text_cdb
write-host "--------------------------------------------------------------------------------------" -fore green

Skript-Ausgabe

Unter folgender URL gibt es weitere Informationen zu Microsofts empfohlenen Limits:
https://docs.microsoft.com/en-us/sharepoint/install/software-boundaries-and-limits