Mal wieder etwas an der SharePoint-Umgebung umkonfiguriert?! Nun den kompletten Health-Analyzer einzeln durchzugehen und “Reanalyze now” bei jeder einzelnen Meldung zu klicken, erscheint doch etwas umständlich. Also prüfe ich nach einer Änderung einfach alle “Meldungen”, in dem ich alle Health Analyzer-Prüfungen auf einmal durchführen lasse.

Hier ein entsprechendes PowerShell:

asnp *share*
write-host "Getting timerjob definitions…"
$jobs = Get-SPTimerJob | ? {$_.Title -like "Health Analysis Job*"}
if (!$jobs -or $jobs.Count -eq 0) {
# Maybe in German? 🙂
$jobs = Get-SPTimerJob | ? {$_.Title -like "Integritätsanalyseauftrag*"}
}
if (!$jobs -or $jobs.Count -eq 0) {
throw "Found no timerjobs."
}
write-host "Found" $jobs.Count "timerjobs. Calling RunNow on all of them…" -f y
foreach ($job in $jobs) {
write-host $job.Title
$job.RunNow()
}
write-host "Getting Central Admin URL…" -f Y
$caUrl = Get-SPWebApplication includecentraladministration | where {$_.IsAdministrationWebApplication} | Select-Object ExpandProperty Url
write-host "Open IE with current timerjob status…" -f Y
$ie = New-Object com internetexplorer.application;
$ie.visible = $true;
$ie.navigate($caUrl + "/_admin/ServiceRunningJobs.aspx");
write-host "finished" -f Green

Hinterher öffnet das Skript auch einen Internet Explorer mit der entsprechenden Status-Seite, damit man weiß, wann alle Jobs durchgelaufen sind.

Das Skript benötigt keine Parameter und die Ausgabe sieht dann so aus: