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

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

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

SharePoint Online:使用 PowerShell 获取用户配置文件属性


要求:SharePoint Online 获取所有用户配置文件并导出到 CSV。

如何获取 SharePoint Online 中的用户配置文件属性?

在这篇博文中,我们将了解如何在 SharePoint Online 中获取用户配置文件属性。我们将了解如何使用 PowerShell for SharePoint Online、检索用户配置文件的属性,然后使用 SharePoint 管理中心获取特定用户的配置文件属性。我们还将查看一些示例脚本,这些脚本检索给定用户配置文件的特定属性或所有属性。

用户配置文件属性是保存“名字”、“姓氏”、“部门”、“技能”等用户数据的字段。默认情况下,SharePoint 已经拥有一组丰富的用户配置文件属性。若要获取 SharePoint Online 中的所有用户配置文件和用户配置文件属性,请执行以下步骤:

  1. 登录 SharePoint Online 管理中心 >> 单击左侧导航中的“更多功能”链接 >> 单击“用户配置文件”下的“打开”按钮。
  2. 在“用户配置文件”中,单击“人员”选项卡下的“管理用户配置文件”链接。

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

  3. 使用搜索获取用户的用户配置文件 >> 从上下文菜单中选择“编辑我的配置文件”。

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

这个接口可以帮助我们一一获取各个用户的个人资料和属性。现在,让我们看看如何使用 PowerShell 获取 SharePoint Online 中的用户配置文件属性。

要从用户配置文件服务获取所有可用属性,请使用:$UserProfile.UserProfileProperties.Keys

用于获取用户配置文件属性的 SharePoint Online 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"

Function Get-SPOUserProfileProperty()
{
    param
    (
        [Parameter(Mandatory=$true)] [string] $AdminSiteURL,
        [Parameter(Mandatory=$true)] [string] $UserAccount,
        [Parameter(Mandatory=$true)] [string] $Property
    )    
    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($AdminSiteURL)
        $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 the User Profile Property
        Write-host $UserProfile.UserProfileProperties[$Property]

    }
    Catch {
        write-host -f Red "Error Getting User Profile Properties!" $_.Exception.Message
    }
}
#Call the function
$AdminSiteURL="https://crescent-admin.sharepoint.com"
$UserAccount="[email protected]"
$Property="Department"

Get-SPOUserProfileProperty -AdminSiteURL $AdminSiteURL -UserAccount $UserAccount -Property $Property

此 PowerShell 获取特定用户的特定属性。同样,您可以使用 PowerShell 从 SharePoint Online 用户配置文件中获取任何可用的用户属性,例如电子邮件、经理等。

SharePoint Online:使用 PowerShell 获取用户配置文件属性

您还可以使用用户配置文件 Web 服务获取用户配置文件属性。具体方法如下:


#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"

#variables
$AdminCenterURL = "https://Crescent-admin.sharepoint.com"
$SiteURL="https://Crescent.sharepoint.com/"

#Setup Credentials to connect
$Cred= Get-Credential
$Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Cred.Username, $Cred.Password)

#Authenticate the web service
$UserProfileService= New-WebServiceProxy -Uri ("$AdminCenterURL/_vti_bin/UserProfileService.asmx?wsdl") -UseDefaultCredential False
$UserProfileService.Credentials = $Credentials
$URI = New-Object System.Uri($AdminCenterURL)
$Container = New-Object System.Net.CookieContainer
$Container.SetCookies($URI, $Credentials.GetAuthenticationCookie($AdminCenterURL))
$UserProfileService.CookieContainer = $Container

#Sets the first User profile, at index -1
$UserProfileResult = $UserProfileService.GetUserProfileByIndex(-1)

#To Get All Properties available: $UserProfileResult.UserProfile| Select name

#Loop through all user profiles
While ($UserProfileResult.NextValue -ne -1) 
{
    #Get the user UPN property
    $Property = $UserProfileResult.UserProfile | Where-Object { $_.Name -eq "SPS-UserPrincipalName"}
    Write-host $Property.Values[0].Value

    #Get Account Name
    $Property = $UserProfileResult.UserProfile | Where-Object { $_.Name -eq "AccountName"}
    Write-host $Property.Values[0].Value

    #Get the next profile
    $UserProfileResult = $UserProfileService.GetUserProfileByIndex($UserProfileResult.NextValue)
} 

PnP PowerShell 获取 SharePoint Online 中的用户配置文件属性

以下是如何使用 PnP PowerShell cmdlet Get-PnPUserProfileProperty 获取 SharePoint Online 中的所有用户配置文件属性:


#Set Variables
$SiteURL = "https://crescent.sharepoint.com"
$UserAccount = "[email protected]"

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

#Get all properties of a User Profile
$UserProfile = Get-PnPUserProfileProperty -Account $UserAccount
$UserProfile.UserProfileProperties

该脚本从用户配置文件中检索所有属性。

Property NameUserProfile_GUIDSIDADGuidAccountNameFirstNameSPS-PhoneticFirstNameLastNameSPS-PhoneticLastNamePreferredNameSPS-PhoneticDisplayNameWorkPhoneDepartmentTitleSPS-DepartmentManagerAboutMePersonalSpacePictureURLUserNameQuickLinksWebSitePublicSiteRedirectSPS-JobTitleSPS-DataSourceSPS-MemberOfSPS-Dotted-lineSPS-PeersSPS-ResponsibilitySPS-SipAddressSPS-MySiteUpgradeSPS-DontSuggestListSPS-ProxyAddressesSPS-HireDateSPS-DisplayOrderSPS-ClaimIDSPS-ClaimProviderIDSPS-LastColleagueAddedSPS-OWAUrlSPS-ResourceSIDSPS-ResourceAccountNameSPS-MasterAccountNameSPS-UserPrincipalNameSPS-O15FirstRunExperienceSPS-PersonalSiteInstantiationStateSPS-DistinguishedNameSPS-SourceObjectDNSPS-LastKeywordAddedSPS-ClaimProviderTypeSPS-SavedAccountNameSPS-SavedSIDSPS-ObjectExistsSPS-PersonalSiteCapabilitiesSPS-PersonalSiteFirstCreationTimeSPS-PersonalSiteLastCreationTimeSPS-PersonalSiteNumberOfRetriesSPS-PersonalSiteFirstCreationErrorSPS-FeedIdentifierWorkEmailCellPhoneFaxHomePhoneOfficeSPS-LocationAssistantSPS-PastProjectsSPS-SkillsSPS-SchoolSPS-BirthdaySPS-StatusNotesSPS-InterestsSPS-HashTagsSPS-EmailOptinSPS-PrivacyPeopleSPS-PrivacyActivitySPS-PictureTimestampSPS-PicturePlaceholderStateSPS-PictureExchangeSyncStateSPS-MUILanguagesSPS-ContentLanguagesSPS-TimeZoneSPS-RegionalSettings-FollowWebSPS-LocaleSPS-CalendarTypeSPS-AltCalendarTypeSPS-AdjustHijriDaysSPS-ShowWeeksSPS-WorkDaysSPS-WorkDayStartHourSPS-WorkDayEndHourSPS-Time24SPS-FirstDayOfWeekSPS-FirstWeekOfYearSPS-RegionalSettings-InitializedOfficeGraphEnabledSPS-UserTypeSPS-HideFromAddressListsSPS-RecipientTypeDetailsDelveFlagsVideoUserPopupPulseMRUPeoplemsOnline-ObjectIdSPS-PointPublishingUrlSPS-TenantInstanceIdSPS-SharePointHomeExperienceStateSPS-RefreshTokenSPS-MultiGeoFlagsPreferredDataLocationCountry

您可以通过以下方式查询特定属性:


Write-host $UserProfile.UserProfileProperties["Department"]

如果您需要从所有用户配置文件中获取所有属性并将其导出到 CSV 文件,请参阅另一篇文章:使用 PowerShell 在 SharePoint Online 中导出所有用户配置文件属性

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

取消回复欢迎 发表评论:

关灯