List all alerts in a SharePoint farm

The PowerShell below allows you to list out in CSV format all the Alerts users have set on all lists in all sites, in all site collections, in all the web applications in a SharePoint Farm.

This script is a modification of the script at http://www.deliveron.com/blog/post/Find-all-Alerts-in-a-Site-Collection-in-SharePoint-2010.aspx by Jess Collicott which listed a site collection’s alerts.

####################################################################################################
#
#  Author.......: Khalid Ansari
#  Date.........: 07 Apr 2014
#  Description..: Output alerts set on all sites in all site collections in all web apps in the farm
#				  to a CSV file
#
####################################################################################################
Add-PSSnapin microsoft.sharepoint.powershell

$spAssignment = Start-SPAssignment

$webApps = Get-SPWebApplication -IncludeCentralAdministration
$alertResults = @()
foreach($webApp in $webApps)
{
    $webApp.url
	foreach ($site in $webApp.Sites) {
		$site.url
		foreach ($web in $site.AllWebs) {
			$web.url
			foreach ($alert in $web.Alerts){
				$alertResult = New-Object PSObject
				$alertResult | Add-Member -type NoteProperty -name "List URL" -value ($web.URL + "/" + $alert.ListUrl)
				$alertResult | Add-Member -type NoteProperty -name "Alert Title" -value $alert.Title
				$alertResult | Add-Member -type NoteProperty -name "Alert Type" -value $alert.AlertType
				$alertResult | Add-Member -type NoteProperty -name "Subscribed User" -value $alert.User
				$alertResults += $alertResult
			}
		}
	}
}
$alertResults

$alertResults | Export-CSV "FarmAlerts.csv"

Write-Host
Write-Host "Script Completed"
Stop-SPAssignment $spAssignment

The script will create a file called FarmAlerts.csv with a list of all the alerts.

Leave a Reply

Your email address will not be published. Required fields are marked *