如何获取网站集中的所有用户配置文件? (SharePoint Online O365)

如何使用JSOM/CSOM或REST API检索网站集中的所有用户配置文件?如何获取网站集中的所有用户配置文件? (SharePoint Online O365)

我觉得没有什么是完全的作品,我需要以下属性:

  • 用户名
  • 移动
  • 电子邮件
  • 档案图片

在此先感谢

回答:

我们可以使用M icrosoft图通过如下申请检索所有用户:

GET:https://graph.microsoft.com/v1.0/users 

您可以通过显示名称,mobilePhone,邮件属性来获取用户名,手机和电子邮件。并获得了个人资料图片,我们需要发送的请求像下面为每个用户:

https://graph.microsoft.com/v1.0/users/{id | userPrincipalName}/photo/$value 

,并呼吁微软图形REST API,我们需要注册应用程序,并授予该应用的适当许可。

为List User范围:

User.ReadBasic.All; User.Read.All; User.ReadWrite.All; Directory.Read.All; Directory.ReadWrite.All; Directory.AccessAsUser.All 

为get photo范围:

User.Read; User.ReadBasic.All; User.Read.All; User.ReadWrite.All; User.Read 

而且因为我们需要让不同的用户的个人资料,我们需要使用的应用程序,只是象征性地(守护进程服务应用程序)。

参考here调用微软图形的服务或守护程序

回答:

如果你只需要对所有用户导出到文件中,使用PowerShell。 您需要在下面的代码中更改2件事:客户端库和网站集urtl的位置。

Add-Type -Path "c:\DLLS\Microsoft.SharePoint.Client.dll" 

Add-Type -Path "c:\DLLS\Microsoft.SharePoint.Client.Runtime.dll"

Add-Type -Path "c:\DLLS\Microsoft.SharePoint.Client.UserProfiles.dll"

#Mysite URL

$site = 'https://NAME.sharepoint.com/'

#Get the Client Context and Bind the Site Collection

$context = New-Object Microsoft.SharePoint.Client.ClientContext($site)

#Authenticate

$newCredentials = Get-Credential

$UserName = $newCredentials.UserName

$SecurePassword = $newCredentials.Password

$credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($UserName, $SecurePassword)

$context.Credentials = $credentials

#Fetch the users in Site Collection

$users = $context.Web.SiteUsers

$context.Load($users)

$context.ExecuteQuery()

#Create an Object [People Manager] to retrieve profile information

$people = New-Object Microsoft.SharePoint.Client.UserProfiles.PeopleManager($context)

$collection = @()

Write-Host "Found" $users.Count " users. Exporting..."

for($I = 1; $I -lt $users.Count; $I++){

try

{

$percCompl = [Math]::Floor(($I/$users.Count) * 100)

Write-Progress -Activity Updating -Status 'Progress->' -CurrentOperation "$percCompl% complete" -PercentComplete $percCompl;

$user = $users[$I]

$userprofile = $people.GetPropertiesFor($user.LoginName)

$context.Load($userprofile)

$context.ExecuteQuery()

$profileData = "" | Select "FirstName", "LastName", "UserName", "WorkEmail", "WorkPhone", "Department", "JobTitle", "Location", "SiteUrl"

if($userprofile -ne $null -and $userprofile.Email -ne $null)

{

$upp = $userprofile.UserProfileProperties

$profileData.FirstName = $upp.FirstName

$profileData.LastName = $upp.LastName

$profileData.UserName = $upp.UserName

$profileData.WorkEmail = $upp.WorkEmail

$profileData.WorkPhone = $upp.WorkPhone

$profileData.Department = $upp.'SPS-Department'

$profileData.JobTitle = $upp.'SPS-JobTitle'

$profileData.Location = $upp.'SPS-Location'

$profileData.SiteUrl = $site

$collection += $profileData

}

else{

$profileData.FirstName = $user.UserId

$profileData.LastName = $upp.Title

$profileData.WorkEmail = $user.Email

$profileData.SiteUrl = $site

$collection += $profileData

}

}

catch

{

Write-Host "UserError: " $user.LoginName ". Error detail:" $($_)

}

}

$collection | Export-Csv C:\SPO-Users.csv -NoTypeInformation -Encoding UTF8

Write-Host "Done!" -ForegroundColor Green

以上是 如何获取网站集中的所有用户配置文件? (SharePoint Online O365) 的全部内容, 来源链接: utcz.com/qa/258934.html

回到顶部