Ever needed to know if your SharePoint crawls are running too long? I wrote the below script to keep an eye on my crawls, and report if they are running too long.
In the script, I’m getting the Search Service App. Looping through its content sources, then finding crawls that are running longer than 5 minutes.
#Get PowerShell Snapin if ((Get-PSSnapin -Name Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue) -eq $null) { Add-PsSnapin Microsoft.SharePoint.PowerShell } #get your Search Service App $ssa = Get-SPEnterpriseSearchServiceApplication "Search Service Application" #get the content sources from your Search Service App $contentsources = Get-SPEnterpriseSearchCrawlContentSource -SearchApplication $ssa #loop through the content sources foreach($cs in $contentsources) { #check for crawls that are running if ($cs.CrawlStatus -ne "Idle") { $cLength = New-TimeSpan -Start ($cs.CrawlStarted) -End (Get-Date) $cLength = $cLength.Minutes #if the crawl has been running for more than X minutes, send an email if($clength -gt 5) { #email someone that cares } } }