当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 使用 PowerShell 将用户显示名称从 Active Directory 同步/更新到 SharePoint

作者:精品下载站 日期:2024-12-14 13:47:48 浏览:14 分类:玩电脑

使用 PowerShell 将用户显示名称从 Active Directory 同步/更新到 SharePoint


问题:
我们发现 AD 和 SharePoint 之间的用户属性存在差异。例如。用户的显示名称属性在 Active Directory 中更新。但 SharePoint 仍显示用户的旧显示名称。

[玩转系统] 使用 PowerShell 将用户显示名称从 Active Directory 同步/更新到 SharePoint

如何将用户显示名称从 Active Directory 同步到 SharePoint?
理想情况下,正确的 SharePoint 用户配置文件同步设置应避免此类问题。使用这些 PowerShell 脚本强制从 AD 更新到 SharePoint。我们可以使用 PowerShell 脚本来更新用户的显示名称。例如。


Set-SPUser -Identity "i:0#.w|domain\username" -DisplayName "NewDisplayName" -Web https://sp-site

上述 cmdlet 更新特定站点的给定用户的显示名称。让我们为网站(子网站)的所有用户执行此操作。

从 Active Directory 同步网站集的所有用户:


Add-PSSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue

#Subsite URL
$SiteURL = "https://portal.crescent.com/Teams/globalfunctions/compliance/"

#Get all users of the subsite
$UsersColl = Get-SPUser -web $SiteURL -limit ALL

#Process each user
foreach($user in $UsersColl)
{    
    #Sync user from Active directory
    $User | Set-SPUser -SyncFromAD -ErrorAction SilentlyContinue

    Write-host -foregroundcolor green "Display Name for $($user.Name) updated"
}

用于更新 SharePoint 中所有网站集中用户的显示名称的 PowerShell 脚本:

此 PowerShell 脚本扫描并更新所有站点上的给定用户属性。


Add-PSSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue

#Variables
$UserID = "i:0#.w|Crescent\MichaelF"
$NewDisplayName = "Michael Fisher"

#Get All Site Collections
$Sites = Get-SPSite -limit all

#Iterate through each site collection
foreach ($Site in $Sites)
{
    #Try to Get the User from site collection
    $User = Get-SPUser -identity $UserID -web $Site.url -ErrorAction SilentlyContinue

    #If User found
    If($user)
    {    
        #Update the Display Name of the user
        Set-SPUser -identity $user -DisplayName $NewDisplayName
        Write-host -foregroundcolor green "Display Name updated in Site  $($site.url)"
    }
}

虽然上面的代码仅设置给定的显示名称,但让我们将所有属性(例如电子邮件、部门、职务等)从 AD 同步到 SharePoint:


$User = Get-SPuser "i:0#.w|Crescent\michaelf" -web https://intranet.crescent.com 
$User | Set-SPUser -SyncFromAD

在网站集中同步 AD 中的特定用户:


Add-PSSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue

#Parameters
$UserID="Crescent\Jaten" #Classic Authentication
$SiteURL="https://portal.crescent.com"

#Get All sites of the Site Collection
$Sites = Get-SPSite $SiteURL | Get-SPWeb -limit all

#Iterate through each site collection
ForEach ($Site in $Sites)
{
    Write-host "Processing Site:"$Site.URL
    #Try to Get the User from site collection
    $User = Get-SPUser $UserID -web $Site.url -ErrorAction SilentlyContinue

    if($User -ne $Null)
    {
        #Sync User
        $User | Set-SPUser -SyncFromAD -ErrorAction SilentlyContinue
        Write-host -foregroundcolor green "Display Name for $($user.Name) updated in Site  $($site.url)"
    }
}

同步所有站点中 Active Directory 中的所有用户属性:

如何同步所有 SharePoint 2010 网站中的所有用户属性?


Add-PSSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue

#Get All Site Collections
$Sites = Get-SPSite -limit all

#Iterate through each site collection
ForEach ($Site in $Sites)
{
    #Try to Get the User from site collection
    $UsersColl = Get-SPUser -web $Site.url

    #Process each user
    foreach($user in $UsersColl)
    {    
        $User | Set-SPUser -SyncFromAD -ErrorAction SilentlyContinue
        Write-host -foregroundcolor green "Display Name for $($user.Name) updated in Site  $($site.url)"
    }
}

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯