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()
}
How to Operate SharePoint User Alerts with PowerShell的更多相关文章
- SharePoint自动化系列——通过PowerShell创建SharePoint Lists
转载请注明出自天外归云的博客园:http://www.cnblogs.com/LanTianYou/ 代码如下(保存到本地ps1文件中,右键run with PowerShell即可): Add-PS ...
- SharePoint自动化系列——通过PowerShell创建SharePoint List Items
转载请注明出自天外归云的博客园:http://www.cnblogs.com/LanTianYou/ 代码如下(保存到本地ps1文件中,右键run with PowerShell即可): Add-PS ...
- SharePoint自动化系列——通过PowerShell创建SharePoint Web
转载请注明出自天外归云的博客园:http://www.cnblogs.com/LanTianYou/ 代码如下(保存到本地ps1文件中,右键run with PowerShell即可): Add-PS ...
- SharePoint自动化系列——通过PowerShell创建SharePoint Site Collection
通过PowerShell创建SharePoint Site Collection,代码如下: Add-PSSnapin microsoft.sharepoint.powershell function ...
- SharePoint自动化系列——通过PowerShell在SharePoint中批量做数据
转载请注明出自天外归云的博客园:http://www.cnblogs.com/LanTianYou/ PowerShell是基于.NET的一门脚本语言,对于SharePoint一些日常操作支持的很好. ...
- SharePoint 解决方案和功能-PowerShell
1. 添加解决方案到SharePoint场 Add-SPSolution "c:\newsolution.wsp" 2. 获取场中的解决方案 Get-SPSolution 3. 获 ...
- 【SharePoint学习笔记】第2章 SharePoint Windows PowerShell 指南
快速了解Windows PowerShell 从SharePoint 2010开始支持PowerShell,仍支持stsadm.exe工具: 可以调用.NET对象.COM对象.exe文 ...
- SharePoint自动化部署,利用PowerShell 导出/导入AD中的用户
这几个月一直在帮客户改需求,部署.我已经心力憔悴,经过一段时间的摸索,我对用PowerShell实现自动化部署也有了一些心得,比如说利用PowerShell导出导入AD中的User.在基于ShareP ...
- [SharePoint 2010] SharePoint 2010 部署、收回和删除解决方案----STSADM和PowerShell
STSADM stsadm -o addsolution –filename c:\bin\CustomerSiteSearch.wsp stsadm -o deploysolution –name ...
随机推荐
- Linux常用网络命令
1.tracepath tracepath追踪出到指定的目的地址的网络路径,并给出在路径上的每一跳(hop).如果你的网络有问题或是慢了,tracepath可以查出网络在哪里断了或是慢了. 命令格式: ...
- CSS list-style属性控制ul标签样式
试一试 <style type="text/css" media="all"> ul { list-style-type: disc; } ul#c ...
- 前端学PHP之字符串函数
× 目录 [1]特点 [2]输出 [3]空格[4]大小写[5]HTML[6]格式化[7]比较 前面的话 字符串的处理和分析在任何编程语言中都是一个重要的基础,往往是简单而重要的.信息的分类.解析.存储 ...
- Java基础之类Class使用
大家都知道Java是一门面向对象编程语言,在Java世界里,万事万物皆对象,那个Java中怎么表示对象呢?Class 我们知道Java中的对象都是Object类的子类,那么今天我们就一起来研究一下Ja ...
- 你需要知道的包管理器(Package Manager)
最近我花了一点时间关注了在不同系统之中所用到的包管理器(Package Manager) .最开始的时候,我是在使用Linux操作系统时,对这种工具以及它背后的想法深深迷恋住了:这真是自由的软件世界. ...
- ZOJ Problem Set - 1001 A + B Problem
ZOJ ACM题集,编译环境VC6.0 #include <stdio.h> int main() { int a,b; while(scanf("%d%d",& ...
- Linux入门
参考资料:http://www.92csz.com/study/linux/ [Linux系统目录结构] 登录系统后,在当前命令窗口下输入 ls / 你会看到 以下是对这些目录的解释: /bin bi ...
- linker command failed with exit code
转载 : http://blog.csdn.net/chengwuli125/article/details/25051741
- react入门(2)
接着上一次的讲,如果没有看过上一篇文章的小伙伴可以先看一下http://www.cnblogs.com/sakurayeah/p/5807821.html React事件 可以先看一下官网讲解的内容h ...
- 【菜鸟玩Linux开发】通过MySQL自动同步刷新Redis
在服务端开发过程中,一般会使用MySQL等关系型数据库作为最终的存储引擎,Redis其实也可以作为一种键值对型的数据库,但在一些实际场景中,特别是关系型结构并不适合使用Redis直接作为数据库.这俩家 ...