Get all SharePoint Users in CSV File from Farm using PowerShell in SharePoint

In this post we will discuss how we can get all the SharePoint users in CSV file presented in farm using PowerShell in SharePoint 2013. This is a script that gets each SharePoint site on the farm, enumerates all the site collections and webs and dumps them to the screen as well as a CSV file.

New to Office 365 SharePoint Online? Get Office 365 Enterprise E3 Subscription & Try out all the features

The Current date and time is always appended to the file name so you don’t have to worry about wiping out previous results.

Read some SharePoint tutorials

Hub Sites SharePoint Online Office 365 Tutorial Download PDF Free

SharePoint Server 2016 Installation step by step

How to do an IISReset in all the servers in a SharePoint Farm?

Below is the PowerShell Script to Get All the Users:


Add-PSSnapin microsoft.sharepoint.powershell -ErrorAction SilentlyContinue

$timestamp = get-date -format “yyyyMMdd_hhmmtt”

$filenameStart = “AllFARMUsers”

$logfile = (“{0}{1}.csv” -f $filenamestart, $timestamp)

$header = “type,user,group,weburl,webname”

$header | out-file -FilePath $logfile

$iissitelist = get-spwebapplication

foreach($onesite in $iissitelist)


foreach ($SiteCollection in $onesite.sites)


write-host $SiteCollection -foregroundcolor Blue

foreach ($web in $SiteCollection.Allwebs)


write-host ” ” $web.url $ “users:” -foregroundcolor yellow

# Write-host ” ” $web.users | select name

foreach ($userw in $web.users)


#if ($userw -like “domain\*”)


write-host ” ” $userw -foregroundcolor white

#$msg = (“{0},{1} user:{2}” -f $web.url,$, $userw)

$msg = (“RootUser,{0},-,{1},{2}” -f $userw, $web.url,$

$msg | out-file -FilePath $logfile -append

# }


foreach ($group in $web.Groups)


Write-host ” ” $web.url $ -foregroundcolor green

foreach ($user in $group.users)


# if ($user -like “Domain\*”)


Write-host ” ” $user -foregroundcolor white

#$msg = (“{0},{1},group:{2}, user:{3}” -f $web.url, $, $group, $user)

$msg = (“GroupUser,{0},{1},{2},{3}” -f $user, $group, $web.url, $

$msg | out-file -FilePath $logfile -append








Hope this will be helpful.

Check out Best Alternative to InfoPath -> Try Now


(Installation & Features)