首页 > 代码库 > Import and Export users from user profile service By Powershell

Import and Export users from user profile service By Powershell

Sharepoint中有2个服务User Profile ServiceUser Profile Synchronization Service跟用户息息相关,其中user profile service是user profile serivce application可运行的前提。

User Profile Synchronization Service:用于同步AD账号信息到Sharepoint Farm(实际是到User profile database),我们在配置user profile service application会创建user Profile相关的数据库

User Profile Service:用于承载user profile service application的正常运行。

user profile service application只有导入数据(通过配置Configure Synchronization Connections),并没有提供导出数据接口。

另外导入数据也不灵活,比如我们只想导入特定的数据,而不是整个AD, 对于这种特殊的需求通过powershell可以得到解决。

至于如何启动User profile service和user profile synchronization servie,配置user profile service application本文就不细说了

本文的学习目标是:如何用powershell来导入和导出用户信息

  • Powershell 导入用户到user profile service 
    $path=‘c:\userlist.csv‘    $site = $caUrl    $context = Get-SPServiceContext -Site $site    $web = Get-SPWeb -Identity $site    try    {    $upm = New-Object -TypeName Microsoft.Office.Server.UserProfiles.UserProfileManager -ArgumentList $context    }    catch{}    if($upm -ne $null)   {        $userslist = Import-Csv -Path $path        $r = 1;        for($count=0; $count -lt $userslist.Count; $count++)            {                 $user_name = $domain +"\"+ $userslist[$count].UserID -replace " ", ""                 if ($upm.UserExists($user_name)) {}                  else                   {                     try                     {                         $profileproperty = $upm.CreateUserProfile($user_name)                $profileproperty["Manager"].Value=http://www.mamicode.com/‘‘                $profileproperty["Mail"].Value=http://www.mamicode.com/‘‘                $profileproperty["Title"].Value=http://www.mamicode.com/‘‘                           $profileproperty.Commit()                                            }                     catch                     {                      Write-Host -f red ([String]::Format("{0} Not Exist",$user_name));                     }                 }             }    }
  • Powershell 从User profile service中导出用户
$siteUrl = "ca url"$outputFile = "C:\sharepoint_user_profiles.csv"$serviceContext = Get-SPServiceContext -Site $siteUrl$profileManager = New-Object Microsoft.Office.Server.UserProfiles.UserProfileManager($serviceContext);$profiles = $profileManager.GetEnumerator()$collection = @()foreach ($profile in $profiles) {    $profileData = "" |    select "AccountName", "PreferredName" , "Manager" , "Office" , "Location" , "WorkEmail" , "Assistant" , "AboutMe" , "Language" , "PictureURL" , "Role"      $profileData.AccountName = $profile["AccountName"]   $profileData.PreferredName = $profile["PreferredName"]   $profileData.Manager = $profile["Manager"]   $profileData.Office = $profile["Office"]   $profileData.Location = $profile["Location"]   $profileData.WorkEmail = $profile["WorkEmail"]   $profileData.Assistant = $profile["Assistant"]   $profileData.AboutMe = $profile["AboutMe"].Value   $profileData.Language = $profile["Language"]   $profileData.PictureURL = $profile["PictureURL"]   $profileData.Role = $profile["Role"]      #$collection += $profileData | ConvertTo-Html -Fragment   $collection += $profileData}$collection | Export-Csv $outputFile -NoTypeInformation -encoding "UTF8"

 

Import and Export users from user profile service By Powershell