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

[玩转系统] SharePoint Online:使用 PowerShell 更新用户配置文件属性

作者:精品下载站 日期:2024-12-14 21:06:26 浏览:15 分类:玩电脑

SharePoint Online:使用 PowerShell 更新用户配置文件属性


要求:使用 PowerShell 更新 SharePoint Online 中的用户配置文件属性。

如何更新 SharePoint Online 中的用户配置文件?

作为 SharePoint Online 环境的管理员,您可能需要不时更新用户配置文件属性。在这篇博文中,我们将逐步介绍使用 SharePoint 管理中心和 PowerShell 更新用户配置文件属性所需的步骤。

要更新 SharePoint Online 用户配置文件属性,请执行以下步骤:

  1. 登录 SharePoint Online 管理中心 >> 单击左侧导航中的“用户配置文件”链接。
  2. 单击“用户配置文件”中“人员”选项卡下的“管理用户配置文件”。使用搜索查找要更新的用户个人资料 >> 单击用户结果的上下文菜单下拉列表中的“编辑我的个人资料”链接。
  3. 更新任何允许的用户配置文件属性,然后单击“保存并关闭”按钮。

    [玩转系统] SharePoint Online:使用 PowerShell 更新用户配置文件属性

您是否在上面的屏幕截图中的某些属性上看到带有链接图标的小数据库?这意味着,这些属性与 Azure Active Directory 链接并自动更新!换句话说,您的更改将在下次配置文件同步时被覆盖。

虽然上述步骤相当简单明了,但如果您想要更新多个用户配置文件的属性,它们可能不是最好的。幸运的是,PowerShell 可以帮助您轻松更改这些属性。

SharePoint Online:使用 PowerShell 更新用户配置文件

让我们更新 SharePoint 用户配置文件的“部门”字段。以下是用于 SharePoint Online 设置用户配置文件属性的 PowerShell。


#Load SharePoint CSOM Assemblies
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\ISAPI\Microsoft.SharePoint.Client.dll"
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\ISAPI\Microsoft.SharePoint.Client.Runtime.dll"
Add-Type -Path "C:\Program Files\Common Files\microsoft shared\Web Server Extensions\ISAPI\Microsoft.SharePoint.Client.UserProfiles.dll"

Function Update-UserProfileProperty()
{
    param
    (
        [Parameter(Mandatory=$true)] [string] $AdminCenterURL,
        [Parameter(Mandatory=$true)] [string] $UserAccount,
        [Parameter(Mandatory=$true)] [string] $PropertyName,
        [Parameter(Mandatory=$true)] [string] $PropertyValue
    )    
    Try {
        #Setup Credentials to connect
        $Cred= Get-Credential
        $Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Cred.Username, $Cred.Password)

        #Setup the context
        $Ctx = New-Object Microsoft.SharePoint.Client.ClientContext($AdminCenterURL)
        $Ctx.Credentials = $Credentials
        
        #Get the User
        $User = $Ctx.web.EnsureUser($UserAccount)
        $Ctx.Load($User)
        $Ctx.ExecuteQuery()

        #Get User Profile
        $PeopleManager = New-Object Microsoft.SharePoint.Client.UserProfiles.PeopleManager($Ctx)
        
        #update User Profile Property
        $PeopleManager.SetSingleValueProfileProperty($User.LoginName, $PropertyName, $PropertyValue)
        $Ctx.ExecuteQuery()

        Write-host "User Profile Property has been Updated!" -f Green
    }
    Catch {
        write-host -f Red "Error Updating User Profile Property!" $_.Exception.Message
    }
}
#Define Parameter values
$AdminCenterURL="https://crescent-admin.sharepoint.com"
$UserAccount="i:0#.f|membership|[email protected]"
$PropertyName="Department"
$PropertyValue="Operations - IT"

#Call the function
Update-UserProfileProperty -AdminCenterURL $AdminCenterURL -UserAccount $UserAccount -PropertyName $PropertyName -PropertyValue $PropertyValue

上面的脚本演示了如何使用 PowerShell 更新 SharePoint Online 中的用户配置文件属性“部门”。

使用 PowerShell 为所有用户设置用户配置文件属性

这次我们更新所有用户配置文件的属性:


#Load SharePoint CSOM Assemblies
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\ISAPI\Microsoft.SharePoint.Client.dll"
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\ISAPI\Microsoft.SharePoint.Client.Runtime.dll"
Add-Type -Path "C:\Program Files\Common Files\microsoft shared\Web Server Extensions\ISAPI\Microsoft.SharePoint.Client.UserProfiles.dll"
  
#Config parameters
$AdminSiteUrl = "https://crescent-admin.sharepoint.com"
$PropertyName = "Fax"
$PropertyValue = "+971-043322001"

#Get Credentials
$Cred = Get-Credential

Try { 
    #Connect to AzureAD
    Connect-AzureAD -Credential $Cred

    #Get All Users from AzureAD Domain - Exclude Guests
    $AllUsers = Get-AzureADUser -All:$True -Filter "UserType eq 'Member'" 
    Write-host "Total Number of User Profiles Found:"$AllUsers.Count
 
    #Setup the context
    $Ctx = New-Object Microsoft.SharePoint.Client.ClientContext($AdminSiteUrl)
    $Ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Cred.Username, $Cred.Password)
 
    #Get User Profile Manager
    $PeopleManager = New-Object Microsoft.SharePoint.Client.UserProfiles.PeopleManager($Ctx)
 
    $Counter = 1
    ForEach($User in $AllUsers)
    {
        #update User Profile Property
        $UserAccount = "i:0#.f|membership|$($User.UserPrincipalName)"
        $PeopleManager.SetSingleValueProfileProperty($UserAccount, $PropertyName, $PropertyValue)
        $Ctx.ExecuteQuery()
        Write-host "User Profile Property has been Updated for: $($User.UserPrincipalName)" -f Green

        $Counter++
        Write-Progress -Activity "Updating User Profile Data..." -Status "Updating User Profile $Counter of $($AllUsers.Count)" -PercentComplete (($Counter / $AllUsers.Count)  * 100)
    }
}
Catch {
    write-host -f Red "Error Updating User Profile Property!" $_.Exception.Message
}

使用 PowerShell 更新 SharePoint Online 用户配置文件属性

人员配置文件中存在具有多值的字段。例如。技能!让我们更新 SharePoint Online 用户配置文件中的多值字段。


#Load SharePoint CSOM Assemblies
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\ISAPI\Microsoft.SharePoint.Client.dll"
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\ISAPI\Microsoft.SharePoint.Client.Runtime.dll"
Add-Type -Path "C:\Program Files\Common Files\microsoft shared\Web Server Extensions\ISAPI\Microsoft.SharePoint.Client.UserProfiles.dll"

Function Update-MultiUserProfileProperty()
{
    param
    (
        [Parameter(Mandatory=$true)] [string] $AdminCenterURL,
        [Parameter(Mandatory=$true)] [string] $UserAccount,
        [Parameter(Mandatory=$true)] [string] $PropertyName,
        [Parameter(Mandatory=$true)] [System.Collections.Generic.List``1[System.string]] $PropertyValues
    )    
    Try {
        #Setup Credentials to connect
        $Cred= Get-Credential
        $Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Cred.Username, $Cred.Password)

        #Setup the context
        $Ctx = New-Object Microsoft.SharePoint.Client.ClientContext($AdminCenterURL)
        $Ctx.Credentials = $Credentials
        
        #Get the User
        $User = $Ctx.web.EnsureUser($UserAccount)
        $Ctx.Load($User)
        $Ctx.ExecuteQuery()

        #Get User Profile
        $PeopleManager = New-Object Microsoft.SharePoint.Client.UserProfiles.PeopleManager($Ctx)
        $PropertyValues
        #update User Profile Property
        $PeopleManager.SetMultiValuedProfileProperty($User.LoginName, $PropertyName, $PropertyValues)
        $Ctx.ExecuteQuery()

        Write-host "User Profile Property has been Updated!" -f Green
    }
    Catch {
        write-host -f Red "Error Updating User Profile Property!" $_.Exception.Message
    }
}
#Define Parameter values
$AdminCenterURL="https://crescent-admin.sharepoint.com"
$UserAccount="i:0#.f|membership|[email protected]"
$PropertyName="SPS-Skills"
$PropertyValues = New-Object "System.Collections.Generic.List``1[System.string]"
$PropertyValues.Add("SharePoint")
$PropertyValues.Add("PowerShell")
$PropertyValues.Add("C#")

#Call the function
Update-MultiUserProfileProperty -AdminCenterURL $AdminCenterURL -UserAccount $UserAccount -PropertyName $PropertyName -PropertyValues $PropertyValues

在另一种情况下,当我必须更新 SharePoint Online 中用户配置文件的语言首选项时,我指定“SPS-MUILanguages”作为属性名称,并指定“en-US、en-GB、de-DE”作为选项。

SharePoint Online:PnP PowerShell 设置用户配置文件属性

以下是如何使用 PnP PowerShell cmdlet Set-PnPUserProfileProperty 更新 SharePoint Online 用户配置文件属性:


#Config Variables
$AdminSiteURL = "https://Crescent-admin.sharepoint.com"
$UserAccount= "[email protected]"

#Connect to PnP Online
Connect-PnPOnline -Url $AdminSiteURL -Interactive

#sharepoint online powershell update user profile property
Set-PnPUserProfileProperty -Account $UserAccount -PropertyName "Department" -Value "Operations - IT"

同样,您可以使用 PowerShell 更新多值用户配置文件属性


Set-PnPUserProfileProperty -Account $UserAccount -PropertyName "SPS-Skills" -Values "SharePoint", "PowerShell"

如果要从 Azure AD 同步用户配置文件属性,请使用 SharePoint Online:使用 PowerShell 从 Azure AD 同步用户配置文件属性

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

取消回复欢迎 发表评论:

关灯