[玩转系统] SharePoint Online:使用 PowerShell 批量更新用户配置文件
作者:精品下载站 日期:2024-12-14 15:39:02 浏览:15 分类:玩电脑
SharePoint Online:使用 PowerShell 批量更新用户配置文件
要求:默认情况下,SharePoint Online 仅同步 Azure AD 中的特定属性。用户配置文件服务中没有可用的自定义属性映射。我们必须编写自己的脚本或实用程序来将其他属性同步到 SharePoint Online 用户配置文件。
如何批量更新 SharePoint Online 中的用户配置文件?
虽然我们可以使用客户端对象模型更新用户配置文件属性,但批量更新用户配置文件属性 API 效率更高,尤其是在处理数千个配置文件以批量更新 SharePoint Online 的自定义用户配置文件属性时;在本指南中,我们将逐步介绍使用 PowerShell 更新 SharePoint Online 中的用户配置文件的步骤。以下是该流程的高级运作方式:
请注意,此方法不支持 SharePoint Online 中的可编辑属性以避免覆盖。假设您想要同步自定义属性或默认情况下未与 SharePoint Online 同步的属性。在这种情况下,您必须在 SharePoint Online 管理中心的“用户配置文件服务”的“管理用户属性”中取消选中“允许用户编辑此属性的值”值。否则,您将看到“New-PnPUPABulkImportJob:属性名称 [Country、CellPhone] 可由用户编辑。”错误信息!
在 Azure AD 和 SharePoint Online 之间映射用户配置文件属性
首先,我们需要映射 Azure AD 和 SharePoint Online 中的属性。要从 Azure AD 获取所有可用属性,请使用以下 PowerShell:
#Set Parameter - Any valid user account
$UserUPN = "[email protected]"
#Connect to AzureAD
Connect-AzureAD -Credential $Cred | Out-Null
#Get All attributes of the User
Get-AzureADUser -ObjectId $UserUPN | Get-Member -MemberType Properties
#To Get Extended properties, use: Get-AzureADUser -ObjectId $UserUPN | Select -ExpandProperty ExtensionProperty
要检索 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"
#Parameters
$TenantURL ="https://crescent.sharepoint.com"
$UserAccount="[email protected]"
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($TenantURL)
$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)
$UserProfile = $PeopleManager.GetPropertiesFor($User.LoginName)
$Ctx.Load($UserProfile)
$Ctx.ExecuteQuery()
#Get all User Profile Properties - $UserProfile.UserProfileProperties to get properties along with values
$UserProfile.UserProfileProperties.Keys
}
Catch {
write-host -f Red "Error Getting User Profile Properties!" $_.Exception.Message
}
以下是 SharePoint Online 中可用的所有用户配置文件属性的列表:
- 用户配置文件_GUID
- 安全识别码
- 广告指南
- 帐户名称
- 名
- SPS-拼音名字
- 姓
- SPS-拼音姓氏
- 首选名称
- SPS-拼音显示名称
- 工作电话
- 部门
- 标题
- SPS-部门
- 经理
- 关于我
- 个人空间
- 图片网址
- 用户名
- 快速链接
- 网站
- 公共站点重定向
- SPS-职位名称
- SPS数据源
- SPS会员
- SPS-虚线
- SPS-同行
- SPS-责任
- SPS-Sip地址
- SPS-MySite升级
- SPS不建议列表
- SPS-代理地址
- SPS-雇用日期
- SPS显示顺序
- SPS-索赔ID
- SPS-ClaimProviderID
- SPS-添加最后一位同事
- SPS-OWAURL
- SPS资源SID
- SPS-资源帐户名称
- SPS-主帐户名
- SPS-用户主体名称
- SPS-O15首次运行体验
- SPS-个人站点实例化状态
- SPS 专有名称
- SPS-源对象DN
- SPS-最后添加的关键字
- SPS-索赔提供者类型
- SPS-保存的帐户名
- SPS保存的SID
- SPS-对象存在
- 个人站点功能
- SPS-个人站点首次创建时间
- SPS-个人站点上次创建时间
- SPS-个人站点重试次数
- SPS-个人站点首次创建错误
- SPS-饲料标识符
- 工作邮箱
- 手机
- 传真
- 家庭电话
- 办公室
- SPS-位置
- 助手
- SPS-过去的项目
- SPS-技能
- SPS-学校
- SPS-生日
- SPS-状态注释
- SPS-兴趣
- SPS-哈希标签
- SPS-电子邮件选择
- SPS-隐私人
- SPS-隐私活动
- SPS-图片时间戳
- SPS-图片占位符状态
- SPS-PictureExchangeSyncState
- SPS-MUI语言
- SPS-内容语言
- SPS-时区
- SPS-区域设置-FollowWeb
- SPS-区域设置
- SPS-日历类型
- SPS-Alt日历类型
- SPS-调整回历日
- SPS-ShowWeeks
- SPS-工作日
- SPS-工作日开始时间
- SPS-工作日结束时间
- SPS-Time24
- SPS-第一周
- SPS-第一周
- SPS-区域设置-初始化
- OfficeGraph启用
- SPS-用户类型
- SPS-隐藏地址列表
- SPS-收件人类型详细信息
- 探索标志
- 视频用户弹出窗口
- 脉冲MRU人
- msOnline-ObjectId
- SPS-PointPublishingUrl
- SPS-租户实例ID
- SPS-SharePointHomeExperienceState
- SPS-刷新令牌
- SPS-多地理标志
- 首选数据位置
- 国家
获得字段后,根据您的要求映射它们。
PowerShell 批量更新 SharePoint Online 中的用户配置文件:
由于 SharePoint Online 不允许您将自定义字段从 Azure AD 映射到用户配置文件中,因此您必须使用 PowerShell(或任何其他自定义工具)手动处理它。在 SharePoint 网站中创建一个文档库来存储导入日志,根据您的环境在此脚本中设置参数、映射属性,然后运行该脚本。在我的场景中,我映射了默认情况下未与 SharePoint Online 映射的“国家/地区”和“移动设备”属性。
#Function to Extract User profile Property
Function Extract-ADUserProperties
{
Param ([Parameter(Mandatory=$true)][string[]]$ADProperties, [Parameter(Mandatory=$true)][PSCredential]$Cred)
Try {
#Connect to AzureAD
Connect-AzureAD -Credential $Cred | Out-Null
#Get All Users from AzureAD
$AllUsers = Get-AzureADUser -All:$True
Write-host "Total Number of User Profiles Found:"$AllUsers.Count
$UserProfileDataColl = @()
#Iterate through All User profiles
$Counter = 1
ForEach($User in $AllUsers)
{
$UserProfileData = New-Object PSObject
$UserProfileData | Add-Member NoteProperty IDName($User.UserPrincipalName)
#Get Value of each property of the user
ForEach($ADProperty in $ADProperties)
{
#Get User Profile Property value
$ADPropertyValue = $User | Select -ExpandProperty $ADProperty
If(!$ADPropertyValue) {$ADPropertyValue = [string]::Empty}
$UserProfileData | Add-Member NoteProperty $ADProperty($ADPropertyValue)
}
$UserProfileDataColl += $UserProfileData
Write-Progress -Activity "Getting User Profile Data..." -Status "Getting User Profile $Counter of $($AllUsers.Count)" -PercentComplete (($Counter / $AllUsers.Count) * 100)
$Counter++
}
#Convert data to required Json format
$JsonData = $UserProfileDataColl | ConvertTo-Json
$JSON = @"
{ "value":
$JsonData
}
"@
#Export JSON to a File
$JSON | Out-File -FilePath $Env:TEMP/UserProfileData.JSON -Force
Write-host "Extracted user profile Properties Successfully!" -f Green
}
Catch {
write-host -f Red "Error Getting User Profile Properties!" $_.Exception.Message
}
}
#Call the function to Extract User profile data to JSON
Extract-ADUserProperties -ADProperties @("Country", "Mobile") -Cred (Get-Credential)
#Parameters
$SiteUrl = "https://crescent.sharepoint.com"
$SiteRelativeFolderPath = "/User Profile Import"
#Connect to site
Connect-PnPOnline $SiteUrl -Credentials (Get-Credential)
#Call the Bulk Import Job - Mapping in format AzureAD User Attribute = SharePoint User Profile Property
New-PnPUPABulkImportJob -Folder $SiteRelativeFolderPath -Path $Env:TEMP/UserProfileData.JSON -IdProperty "IdName" -UserProfilePropertyMapping @{"Country"="Country";"Mobile"="CellPhone"}
此脚本将映射的属性从 Azure AD 提取为 JSON 文件格式,然后启动配置文件属性导入作业以更新 JSON 中的用户配置文件属性。
检查导入作业的状态
要检查导入作业状态,请使用以下命令:
Get-PnPUPABulkImportStatus
我们如何自动化这个 PowerShell 脚本?
创建Windows计划任务,创建用于身份验证的App ID,并在脚本中使用它。以下是一个示例:如何使用 PnP PowerShell 连接到 SharePoint Online - 使用 AppID 和 AppSecret?,请确保在租户级别授予对 App ID 的完全控制权。
我关于 SharePoint Online 用户配置文件更新的其他帖子:
- SharePoint Online:使用 PowerShell 更新用户配置文件属性
- SharePoint Online:使用 PowerShell 从 Azure AD 同步用户配置文件属性
总之,与单独手动更新每个配置文件相比,使用 PowerShell 批量更新 SharePoint Online 中的用户配置文件可以节省大量时间和精力。通过利用 PnP PowerShell 中的 New-PnPUPABulkImportJob cmdlet,管理员只需几行代码即可轻松更新多个用户配置文件。
猜你还喜欢
- 03-30 [玩转系统] 如何用批处理实现关机,注销,重启和锁定计算机
- 02-14 [系统故障] Win10下报错:该文件没有与之关联的应用来执行该操作
- 01-07 [系统问题] Win10--解决锁屏后会断网的问题
- 01-02 [系统技巧] Windows系统如何关闭防火墙保姆式教程,超详细
- 12-15 [玩转系统] 如何在 Windows 10 和 11 上允许多个 RDP 会话
- 12-15 [玩转系统] 查找 Exchange/Microsoft 365 中不活动(未使用)的通讯组列表
- 12-15 [玩转系统] 如何在 Windows 上安装远程服务器管理工具 (RSAT)
- 12-15 [玩转系统] 如何在 Windows 上重置组策略设置
- 12-15 [玩转系统] 如何获取计算机上的本地管理员列表?
- 12-15 [玩转系统] 在 Visual Studio Code 中连接到 MS SQL Server 数据库
- 12-15 [玩转系统] 如何降级 Windows Server 版本或许可证
- 12-15 [玩转系统] 如何允许非管理员用户在 Windows 中启动/停止服务
取消回复欢迎 你 发表评论:
- 精品推荐!
-
- 最新文章
- 热门文章
- 热评文章
[影视] 黑道中人 Alto Knights(2025)剧情 犯罪 历史 电影
[古装剧] [七侠五义][全75集][WEB-MP4/76G][国语无字][1080P][焦恩俊经典]
[实用软件] 虚拟手机号 电话 验证码 注册
[电视剧] 安眠书店/你 第五季 You Season 5 (2025) 【全10集】
[电视剧] 棋士(2025) 4K 1080P【全22集】悬疑 犯罪 王宝强 陈明昊
[软件合集] 25年6月5日 精选软件22个
[软件合集] 25年6月4日 精选软件36个
[短剧] 2025年06月04日 精选+付费短剧推荐33部
[短剧] 2025年06月03日 精选+付费短剧推荐25部
[软件合集] 25年6月3日 精选软件44个
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电视剧] 欢乐颂.5部全 (2016-2024)
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[影视] 【稀有资源】香港老片 艺坛照妖镜之96应召名册 (1996)
[剧集] 神经风云(2023)(完结).4K
[剧集] [BT] [TVB] [黑夜彩虹(2003)] [全21集] [粤语中字] [TV-RMVB]
[实用软件] 虚拟手机号 电话 验证码 注册
[资源] B站充电视频合集,包含多位重量级up主,全是大佬真金白银买来的~【99GB】
[影视] 内地绝版高清录像带 [mpg]
[书籍] 古今奇书禁书三教九流资料大合集 猎奇必备珍藏资源PDF版 1.14G
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电影] 美国队长4 4K原盘REMUX 杜比视界 内封简繁英双语字幕 49G
[电影] 死神来了(1-6)大合集!
[软件合集] 25年05月13日 精选软件16个
[精品软件] 25年05月15日 精选软件18个
[绝版资源] 南与北 第1-2季 合集 North and South (1985) /美国/豆瓣: 8.8[1080P][中文字幕]
[软件] 25年05月14日 精选软件57个
[短剧] 2025年05月14日 精选+付费短剧推荐39部
[短剧] 2025年05月15日 精选+付费短剧推荐36部
- 最新评论
-
- 热门tag