Skip to content
@JaredMeredith

@JaredMeredith

Learn. Share. Repeat.

  • 16Peronalities
  • Builder Profile 10
  • My CliftonStrengths Top 34
  • My Top 5 Themes
  • Resume
Office, PowerShell, SharePoint, Windows

Export SharePoint Users and Properties from a specific Site Collection into a CSV file via PowerShell

08/10/2017 Jared Meredith

Wanted to provide a very helpful PowerShell snippet that I have used on multiple SharePoint farms to pull a list of users and their properties that can be exported out to a CSV file.

Simply update the snippet with your site collection URL and file path/name and you’ll be good to go!

$siteUrl = "http://yoursharepointsite"
$outputFile = "c:\filepath\yourfilehere.csv"

Add-PSSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue
$serviceContext = Get-SPServiceContext -Site $siteUrl
$profileManager = New-Object Microsoft.Office.Server.UserProfiles.UserProfileManager($serviceContext);
$profiles = $profileManager.GetEnumerator()

$fields = @(
            "SID",
            "ADGuid",
            "AccountName",
            "FirstName",
            "LastName",
            "PreferredName",
            "WorkPhone",
            "Office",
            "Department",
            "Title",
            "Manager",
            "AboutMe",
            "UserName",
            "SPS-Skills",
            "SPS-School",
            "SPS-Dotted-line",
            "SPS-Peers",
            "SPS-Responsibility",
            "SPS-PastProjects",
            "SPS-Interests",
            "SPS-SipAddress",
            "SPS-HireDate",
            "SPS-Location",
            "SPS-TimeZone",
            "SPS-StatusNotes",
            "Assistant",
            "WorkEmail",
            "SPS-ClaimID",
            "SPS-ClaimProviderID",
            "SPS-ClaimProviderType",
            "CellPhone",
            "Fax",
            "HomePhone",
            "PictureURL"
           )

$collection = @()

foreach ($profile in $profiles) {
   $user = "" | select $fields
   foreach ($field in $fields) {
     if($profile[$field].Property.IsMultivalued) {
       $user.$field = $profile[$field] -join "|"
     } else {
       $user.$field = $profile[$field].Value
     }
   }
   $collection += $user
}

$collection | Export-Csv $outputFile -NoTypeInformation
$collection | Out-GridView

Hope this helps, questions are welcome.

Help me out and share!

  • Click to email this to a friend (Opens in new window)
  • Click to print (Opens in new window)
  • Click to share on LinkedIn (Opens in new window)
  • Click to share on Facebook (Opens in new window)
  • Click to share on Twitter (Opens in new window)
  • Click to share on Reddit (Opens in new window)
  • Click to share on Tumblr (Opens in new window)
  • More
  • Click to share on Pinterest (Opens in new window)
  • Click to share on Pocket (Opens in new window)
  • Click to share on Telegram (Opens in new window)
  • Click to share on WhatsApp (Opens in new window)
  • Click to share on Skype (Opens in new window)

Like this:

Like Loading...

Related

Tagged CSV, Excel, Export, Office 365, PowerShell, Properties, SharePoint, user profile

Published by Jared Meredith

Executive Director of Enterprise Architecture, Project Management Office, and Strategic Governance with extensive background in helping business partners envision and design enterprise architecture that drives amazing experiences with high availability. I love to take current problems or technical challenges while bringing people together to align solutions and strategy to provide the best technical path for how we can work to achieve goals with technology. View all posts by Jared Meredith

Post navigation

Previous postAWS Elastic Beanstalk ebextensions: Update the IIS App Pool using commands to another App Pool Identity
Next postFour Lessons about Facing Adversity as a New Employee

About Me

Jared Meredith

Jared Meredith

Executive Director of Enterprise Architecture, Project Management Office, and Strategic Governance with extensive background in helping business partners envision and design enterprise architecture that drives amazing experiences with high availability. I love to take current problems or technical challenges while bringing people together to align solutions and strategy to provide the best technical path for how we can work to achieve goals with technology.

Personal Links

  • LinkedIn Profile
  • @JaredMeredith

View Full Profile →

Enter your email address to follow this blog and receive notifications of new posts by email.

Join 56 other followers

Why did I start the site…?

I started this site mainly as a place where I can put any gotchas and snafus I find along the way to better help the development community. I hope it helps as time goes on.

Questions? Comments?

If you have a question about a post then please leave a comment. I'll reply on the comment to keep all answers for everyone to see. If you have a private technical inquiry unrelated to any posts, please direct it to jared.meredith@live.com.

The Latest

  • Presentation Now Available: The Power of Cross-Platform Automated Web-Based Testing in CICD Pipelines
  • TLDR: Reflection + Pain = Progress
  • Join me for “Healthcare Technology During COVID-19” by KTech
  • Communications during coronavirus and a socially distant remote workforce
  • Going to Codestock? Come see me!

Categories

Create a website or blog at WordPress.com
loading Cancel
Post was not sent - check your email addresses!
Email check failed, please try again
Sorry, your blog cannot share posts by email.
%d bloggers like this: