从场的所有 SharePoint 用户创建 AD 安全组/通讯组列表
您是否曾经需要向 SharePoint 场的所有 SharePoint 用户发送电子邮件?您是否曾经想过创建一个包含所有 SharePoint 用户的全局 AD 安全组?好吧,我确信,在某个时候你会的。例如,在计划维护期间,授予对全局站点的访问权限等。您的 SharePoint 场可能有多个 Web 应用程序,有很多用户访问它。我们无法使 AD 组或通讯组列表与所有 SharePoint 用户保持同步,不是吗?但我们可以按需创建 AD 安全组或通讯组列表,其中包括整个 SharePoint 场中的所有用户。这样,就会更加准确和更新。
其想法是:循环访问 SharePoint 场中的每个 Web 应用程序-站点-集合-站点,以检索成员并将其添加到 AD 中的安全组或通讯组列表。
用于将所有 SharePoint 用户添加到 AD 安全组的 PowerShell 脚本:
Add-PSSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue
Import-Module ActiveDirectory
#Variables
$ADGroup="SP13 Authors" #Existing AD Security Group
$ReportPath="D:\SP13_Users.csv"
#Get all Webs from Entire FARM
$WebsCollection = Get-SPWebApplication | Get-SPSite -Limit All | Get-SPWeb -Limit All
#Array to hold user data
$UserDataCollection = @()
foreach($Web in $WebsCollection)
{
#Get all users from web programmatically
$UsersColl = $Web.AllUsers
#Get all users E-mails
foreach ($User in $UsersColl)
{
if( ($User.IsDomainGroup -eq $false) -and ($user.Email.ToString() -ne [string]::Empty))
{
$UserData = New-Object PSObject
$UserData | Add-Member -type NoteProperty -name "EmailID" -value $user.Email.ToString()
$UserDataCollection += $UserData
}
}
}
#Remove duplicates
$UserDataCollection = $UserDataCollection | sort-object -Property {$_.EmailID } -Unique
Write-host "Total Number of Unique Users found:"$UserDataCollection.Length
#Export to CSV
$UserDataCollection | Export-Csv -LiteralPath $ReportPath -NoTypeInformation
#Add each user to AD Group
$UserDataCollection | ForEach-Object {
#Get the user from Email id
$UserEmail = $_.EmailID
$ADuser = Get-ADUser -filter { EmailAddress -eq $UserEmail }
#Ignore Orphans
if($ADuser -ne $null)
{
#Add User to AD Aroup
Add-ADGroupMember -Identity $ADGroup -Members $ADuser
}
}
运行此脚本一次。它将获取所有 SharePoint 用户并将其添加到给定的 AD 组。要使其成为分发列表,请前往 AD,查找并找到 AD 组,转到其属性,分配电子邮件并将组类型更改为“分发”(如果您需要 DL 而不是安全组)。
