Для изменения большого числа записей в списке SharePoint, на который было подписано много человек, столкнулся с задачей, чтоб в это время пользователи не получили кучу сообщений. Думал про 2 реализации отключения оповещений: 1 – изменить настройки SMTP сервера на заведомо неверные, чтоб вся почта скопилась в папке Queue, а потом ее удалить; 2 – временно отключить оповещения для списка. Ниже описание 2-ого метода.

В SharePoint есть класс SPAlert. Он позволяет предоставляет информацию об оповещениях, например, частота оповещений, пользователь, название списка. Также среди параметров есть статус (Status) оповещения.

Параметром статус (Status) можно управлять, меняя его значение. При значении "On" оповещение работает, при "Off" – выключено. Т.е. при значении Off не будут формироваться и отправляться оповещения.

Соответственно, для отключения оповещений нужно установить значение SPAlert.Status = "Off", а для обратного действия, т.е. включения - SPAlert.Status = "On".

Ниже PowerShell скрипт, который позволяет управлять статусами оповещений в SharePoint.

 

if ((Get-PSSnapin "Microsoft.SharePoint.PowerShell" -ErrorAction SilentlyContinue) -eq $null)
{
    Write-Host "Подкдлючение модулей SharePoint"
    Add-PSSnapin Microsoft.SharePoint.PowerShell
}

$siteUrl = "https://spsite/child/site/"
$spweb = Get-SPWeb $siteUrl

foreach($alert in $spweb.Alerts) {
# Раскомментируйте строчку ниже, чтобы включить оповещения SPAlert
#   $alert.Status = "On"

# Раскомментируйте строчку ниже, чтобы выключить оповещения SPAlert
#   $alert.Status = "Off"

    $alert.Update()
# Раскомментируйте строчку ниже для получения информации 
#Write-Host $alert.Title $alert.Status $alert.User
}