How to Operate SharePoint User Alerts with PowerShell

When you migrate list or site, the user alerts in the site will not be migrated together with the content. Below content can help you to do this task. But please take care of it, if you operate it on Prod environment.  

Enable or disable alerts for Web application

## To enable alerts for Web application

$SPwebapp=Get-SPWebApplication "http://SharePointSite.com"

$SPwebapp.AlertsEnabled = $true

$SPwebapp.Update()

# To Disable alerts for a Web application

$SPwebapp.AlertsEnabled = $false

$SPwebapp.Update()

 

Create Alert in SharePoint using PowerShell

##### Create an New alert for an user #########

$SPsite = Get-SPSite "http://SharePointSite.com"

$SPweb=$SPsite.Rootweb

$SPlist=$SPweb.lists["Shared documents"]

$SPuser = $SPweb.EnsureUser('Domain\Salaudeen')

$SPnewAlert = $SPuser.Alerts.Add()

$SPnewAlert.Title = "My Custom Alert"

$SPnewAlert.AlertType=[Microsoft.SharePoint.SPAlertType]::List

$SPnewAlert.List = $SPlist

$SPnewAlert.DeliveryChannels = [Microsoft.SharePoint.SPAlertDeliveryChannels]::Email

$SPnewAlert.EventType = [Microsoft.SharePoint.SPEventType]::Add

$SPnewAlert.AlertFrequency = [Microsoft.SharePoint.SPAlertFrequency]::Immediate

$SPnewAlert.Update()

$SPweb.Dispose()

$SPSite.Dispose()

 

Get all Alerts for an user in SharePoint with PowerShell

##### Display All alerts for a Particular List ########

$SPWeb = Get-SPWeb "http://SharePointSite.com"

#Relative URL of list/document library. For lists "Lists/Tasks"

$SPListURL = "Shared Documents" 

foreach($alert in $SPWeb.Alerts)

{

    if($alert.ListUrl -eq $SPListUrl)

    {           

            "User Name    - " + $alert.User.Name

            "Title        - " + $alert.Title

            "Frequency    - " + $alert.AlertFrequency

            "Delivery Via - " + $alert.DeliveryChannels

            "Change Type  - " + $alert.eventtype

            Write-Host "=================================="

    }

}

$SPweb.Dispose()

 

Create Alerts for All users in a Group

##### Set alerts for all users in the SharePoint Group ######

$SPweb = Get-SPWeb "http://SharePointSite.com"

$SPgroup = $SPweb.Groups["SharePoint Owners"]

$SPlist = $SPweb.Lists["Shared Documents"]

foreach ($SPuser in $SPgroup.Users){

     $alert = $SPuser.Alerts.Add()

     $alert.Title = "My Alert"

     $alert.AlertType = [Microsoft.SharePoint.SPAlertType]::List

     $alert.List = $SPlist

     $alert.DeliveryChannels = [Microsoft.SharePoint.SPAlertDeliveryChannels]::Email

     $alert.EventType = [Microsoft.SharePoint.SPEventType]::Add

     $alert.AlertFrequency = [Microsoft.SharePoint.SPAlertFrequency]::Immediate

     $alert.Update()

}

$SPweb.Dispose()

 

Update SharePoint Alerts using PowerShell

#####  Making Changes in Existing Alerts ########

$SPsite = Get-SPSite "http://SharePointSite.com"

$SPweb=$SPsite.RootWeb

$SPuser=$SPweb.EnsureUser('Domain\Salaudeen')

$SPalertCollection=$SPuser.Alerts

foreach($alert in $SPalertCollection)

{

  $alert.AlertFrequency = [Microsoft.SharePoint.SPAlertFrequency]::Daily

  $alert.Update()

} 

 

Get Alerts for a Particular User

##### Get alerts for a particular user #########

$SPsite = Get-SPSite "http://SharePointSite.com"

$SPweb=$SPsite.RootWeb

$SPuser=$SPweb.EnsureUser('Domain\Salaudeen')

$SPalertCollection=$SPuser.Alerts

foreach($alert in $SPalertCollection)

{

 write-host -f Green $alert.Title

}

 

Find All Alerts of an User in Entire Site collection

##### Get the Alerts of Entire Site collection #####

$SPsiteCollection = Get-SPSite "http://SharePointSite.com"


# Iterate through all Webs in the Site Collection

foreach($SPweb in $SPsiteCollection.AllWebs) 

 {

   foreach($alert in $SPweb.Alerts)

    {

        Write-Host "Alerts List :" $alert.ListUrl

    Write-Host "Alerts Title :" $alert.title

    write-host "Subscribed User: " $alert.user

     }

 }

 

Delete All SharePoint alerts from a List using powershell

##### Delete All alerts for a specific List #####

$SPweb = Get-SPWeb "http://SharePointSite.com"

$SPlist = $SPweb.lists["Shared Documents"]

$IDS = ""

foreach($alert in $spweb.alerts)

{

    if($alert.ListID -eq $SPlist.ID)

    {

    $IDS += $alert.ID.tostring() + "|"

    }

    write-host -nonewline "*"

}

write-host "deleting..."

foreach($s in $IDS.Split("|"))

{

write-host -nonewline "*"

$spweb.alerts.delete([GUID]$s)

}

 

Delete user alerts in SharePoint 2010 with PowerShell

##### Remove all alerts for specific user from a Web Application #####

$SPwebApp = Get-SPWebApplication "http://SharePointSite.com"

$SpecificUser = "Domain\Salaudeen"

foreach ($SPsite in $SPwebApp.Sites)

    {

        # get the collection of webs

        foreach($SPweb in $SPsite.AllWebs)

        {

            $alerts = $SPweb.Alerts

            # if 1 or more alerts for a particular user, Make a note of them by copying their ID to an Array

            if ($alerts.Count -gt 0)

            {

                $myalerts = @()

                foreach ($alert in $alerts)

                {

                if ($alert.User -like $SpecificUser)

                {

                    $myalerts += $alert

                }

            }

            ### now we have alerts for this site, we can delete them

            foreach ($alertdel in $myalerts)

            {

                $alerts.Delete($alertdel.ID)

                write-host $alertdel.ID

            }

        }

    }

}

 

To delete all alerts:

$SPweb.Alerts| foreach-object {$web.Alerts.Delete($_.Id)}

 

Filter the alerts for a single list:

#For for e.g. http://SharePoint.com/site/Assets"
$SPweb.Alerts| where-object {$_.ListUrl -like "Assets"} 

 

Find all the Alerts for a specific user across the web:

# ? is the alias for where-object cmdlet
$web.Alerts | ? {$_.UserId -like "Domain\Salaudeen"}

 

Get all the alerts for a user across the entire site collection:

$site.AllWebs | select -expand Alerts | ? {$_.UserId -like "Domain\Salaudeen"

 

Export User Alerts

$site = Get-SPSite "http://2013portal"

$alertResultsCollection = @()

foreach ($web in $site.AllWebs) {

foreach ($alert in $web.Alerts){

$alertURL = $web.URL + "/" + $alert.ListUrl

$alertResult = New-Object PSObject

$alertResult |Add-Member -type NoteProperty -name "WebUrl" -Value $web.Url

$alertResult | Add-Member -type NoteProperty -name "ListURL" -value $alertURL

$alertResult | Add-Member -type NoteProperty -name "AlertTitle" -value $alert.Title

$alertResult | Add-Member -type NoteProperty -name "ListUrl" -value $alert.ListUrl

$alertResult | Add-Member -type NoteProperty -name "List" -value $alert.List

$alertResult | Add-Member -type NoteProperty -name "DeliveryChannel" -value $alert.DeliveryChannels

$alertResult | Add-Member -type NoteProperty -name "AlertType" -value $alert.AlertType

$alertResult | Add-Member -type NoteProperty -name "EventType" -value $alert.EventType

$alertResult | Add-Member -type NoteProperty -name "Frequency" -value $alert.AlertFrequency

$alertResult | Add-Member -type NoteProperty -name "AlertTime" -value $alert.AlertTime

$alertResult | Add-Member -type NoteProperty -name "SubscribedUser" -value $alert.User

$alertResultsCollection += $alertResult

}

}

$site.Dispose()

$alertResultsCollection

#Export to CSV

$alertResultsCollection | Export-CSV C:\Users\sp2013_farm_admin\Desktop\Alerts.csv

 

Import User Alerts

Import-Csv C:\Users\sp2013_farm_admin\Desktop\Alerts.csv |ForEach-Object{

$webUrl=$_.WebUrl

$listTitle=$_.List

$alertTitle=$_.AlertTitle

$subscribedUser=$_.SubscribedUser

$alertType=$_.AlertType

$deliveryChannel=$_.DeliveryChannel

$eventType=$_.EventType

$frequency=$_.Frequency

 

$web=Get-SPWeb $webUrl

$list=$web.Lists.TryGetList($listTitle)

$user = $web.EnsureUser($subscribedUser)

$newAlert = $user.Alerts.Add()

$newAlert.Title = $alertTitle

$newAlert.AlertType=[Microsoft.SharePoint.SPAlertType]::$alertType

$newAlert.List = $list

$newAlert.DeliveryChannels = [Microsoft.SharePoint.SPAlertDeliveryChannels]::$deliveryChannel

$newAlert.EventType = [Microsoft.SharePoint.SPEventType]::$eventType

$newAlert.AlertFrequency = [Microsoft.SharePoint.SPAlertFrequency]::$frequency

if($frequency -ne "Immediate"){

$AlertTime=$_.AlertTime

$newAlert.AlertTime=$AlertTime

}

$newAlert.Update()

} 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值