SharePoint 2013:如何添加所有现有及未来用户至博客并设置邮件提醒?
嘿,刚好之前帮客户处理过几乎一模一样的需求,SharePoint 2013里要搞定这三个点——批量加现有用户、自动加未来新用户、自动开邮件提醒,其实不用复杂开发,用PowerShell就能高效解决,给你拆解成三个部分一步步来:
1. 批量添加现有用户为博客关注者
SharePoint 2013的UI里没有直接批量添加关注者的选项,最简的方式就是用PowerShell脚本一次性搞定:
- 先以管理员身份打开SharePoint Management Shell
- 复制下面的脚本,把
$siteUrl和$listName替换成你自己的博客网站地址和文章列表名称(默认列表名是Posts,如果没改直接用就行):
# 替换为你的博客网站URL $siteUrl = "http://your-sharepoint-site/blog" # 替换为博客文章列表的名称(默认是Posts) $listName = "Posts" $site = Get-SPSite $siteUrl $web = $site.OpenWeb() $list = $web.Lists[$listName] # 筛选出网站里所有正常启用的用户(排除系统账户和域组) $users = $web.SiteUsers | Where-Object { $_.IsDomainGroup -eq $false -and $_.LoginName -notlike "*system*" } foreach ($user in $users) { try { # 添加用户为博客关注者 $list.Followers.Add($user) Write-Host "✅ 已添加用户: $($user.DisplayName)" } catch { Write-Host "❌ 添加用户 $($user.DisplayName) 失败: $_" } } # 清理资源 $web.Dispose() $site.Dispose()
- 运行脚本后,所有符合条件的用户就都被添加成博客关注者了。
2. 自动添加未来新用户为博客关注者
要实现新用户自动加入,推荐用「用户组+定时PowerShell任务」的组合,不用写代码开发事件接收器,操作更省心:
- 创建自动关注组:在博客网站里新建一个用户组(比如叫「博客自动关注组」),然后进入博客文章列表的「列表设置」→「关注者」,把这个组添加进去。
- 编写自动添加脚本:用下面的脚本检查网站里的新用户,把未加入组的用户自动加进去:
$siteUrl = "http://your-sharepoint-site/blog" $groupName = "博客自动关注组" $site = Get-SPSite $siteUrl $web = $site.OpenWeb() $group = $web.Groups[$groupName] # 筛选出未加入关注组的正常用户 $usersToAdd = $web.SiteUsers | Where-Object { $_.IsDomainGroup -eq $false -and $_.LoginName -notlike "*system*" -and !$group.ContainsUser($_) } foreach ($user in $usersToAdd) { try { $group.AddUser($user) Write-Host "✅ 已将新用户 $($user.DisplayName) 添加到关注组" } catch { Write-Host "❌ 添加用户失败: $_" } } $web.Dispose() $site.Dispose()
- 设置定时任务:把这个脚本保存成
.ps1文件,然后在Windows里创建一个定时任务,设置每天(或者根据你的用户创建频率调整)自动运行这个脚本,这样新用户创建后会被自动拉进关注组,成为博客关注者。
3. 自动为用户订阅博客更新的邮件提醒
默认情况下,用户成为关注者后不会自动开启邮件提醒,所以需要在脚本里额外加一段逻辑来设置:
- 修改前面的批量添加脚本和自动添加脚本,在添加用户的循环里加入下面的代码,就能自动为用户创建博客更新的邮件提醒:
# 为用户创建博客更新的邮件提醒 $alert = New-Object Microsoft.SharePoint.SPAlert($web) $alert.Title = "博客更新提醒" $alert.List = $list $alert.User = $user $alert.AlertType = [Microsoft.SharePoint.SPAlertType]::List $alert.EventType = [Microsoft.SharePoint.SPEventType]::Add # 只提醒新增文章,也可以改成All包含修改 $alert.DeliveryChannels = [Microsoft.SharePoint.SPAlertDeliveryChannels]::Email $alert.SendEmail = $true $alert.Update()
- 注意:要确保用户的邮箱在SharePoint用户配置文件里已经正确填写,不然邮件发不出去。如果用组的方式,也可以直接给组设置邮件提醒,但个人提醒对用户来说更灵活。
内容的提问来源于stack exchange,提问作者Steven Parker
相关产品推荐
相关产品推荐

