zoukankan      html  css  js  c++  java
  • 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('DomainSalaudeen')
    
    $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('DomainSalaudeen')
    
    $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('DomainSalaudeen')
    
    $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 = "DomainSalaudeen"
    
    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 "DomainSalaudeen"}

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

    $site.AllWebs | select -expand Alerts | ? {$_.UserId -like "DomainSalaudeen"

    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:Userssp2013_farm_adminDesktopAlerts.csv

    Import User Alerts

    Import-Csv C:Userssp2013_farm_adminDesktopAlerts.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()
    
    } 
  • 相关阅读:
    final,finally和finalize三者的区别和联系
    Java程序开发中的简单内存分析
    Java堆、栈和常量池以及相关String的详细讲解(经典中的经典)
    java中的基本数据类型一定存储在栈中吗?
    CDN加速-内容分发网络
    大型Java web项目分布式架构演进-分布式部署
    阿里面试-2019
    jvm调优-从eclipse开始
    eclipse中导入maven项目:org.apache.maven.archiver.MavenArchiver.getManifest(org.apache.maven.project.Maven
    图解 CMS 垃圾回收机制原理,-阿里面试题
  • 原文地址:https://www.cnblogs.com/Bear-Study-Hard/p/4958125.html
Copyright © 2011-2022 走看看