Get All Users of SharePoint Farm-Web Application-Site Collection-Site using PowerShell

Requirement: Get all users of SharePoint environment.
PowerShell script to get all SharePoint users at Farm-Web Application-Site Collection-Web levels:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
Add-PSSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue
 
#Output Report File
$currentLocation = (Get-Location).Path
$outputReport = $currentLocation + "\" + "SharePointUsers.csv"
#Write CSV File Header
 
#Array to hold user data
$UserDataCollection = @()
 
#Get All Web Applications and iterate through
$WebAppsColl = Get-SPWebApplication
#To Get all Users from specific web application, Use: $WeAppsColl = Get-SPWebApplication "web-app-url"
#and remove line #12
  
foreach($WebApp in $WebAppsColl)
{
    Write-host "Scanning Web Application:"$WebApp.Name
    #Get All site collections and iterate through
    $SitesColl = $WebApp.Sites
    #To Get all Users from site collection, Use: $SitesColl = Get-SPSite "site-collection-url"
    #and remove lines between #11 to #20 and Line #55 "}"
    #get all users from site collection PowerShell
    foreach ($Site in $SitesColl)
    {
        Write-host "Scanning Site Collection:"$Site.URL
        #Get All Webs and iterate through
        $WebsColl = $Site.AllWebs
        #To Get all Users from aq site, Use: $WebsColl = Get-SPWeb "web-url"
         #and remove lines between #11 to #28 and Lines #53, #54, #55 "}"
 
            foreach ($web in $WebsColl)
            {
                Write-host "Scanning Web:"$Web.URL
                #Get All Users of the Web
                $UsersColl = $web.AllUsers  #get all users programmatically
                    #list all users
                    foreach ($user in $UsersColl)
                    {
                           if($User.IsDomainGroup -eq $false)
                            {
                                $UserData = New-Object PSObject
               
                                $UserData | Add-Member -type NoteProperty -name "UserLogin" -value $user.UserLogin.ToString()
                                $UserData | Add-Member -type NoteProperty -name "DisplayName" -value $user.displayName.ToString()
                                $UserData | Add-Member -type NoteProperty -name "E-mailID" -value $user.Email.ToString()
 
                                $UserDataCollection += $UserData
                            }
                    }
            $Web.dispose()
            }
         $site.dispose()
        }
    }   
    #Remove duplicates
    $UserDataCollection = $UserDataCollection | sort-object -Property  {$_.UserLogin } -Unique
 
    #Remove duplicates and export all users to excel
    $UserDataCollection | Export-Csv -LiteralPath $OutputReport -NoTypeInformation
          
    Write-host "Total Number of Unique Users found:"$UserDataCollection.Length

This script can be used to get all users in site collection and  export all users to excel.
Get All Unique Users in SharePoint Farm using PowerShell: One liner PowerShell script to get unique users of the SharePoint Farm:

1
Get-SPSite -Limit All | Select -ExpandProperty AllWebs | select -ExpandProperty AllUsers | ? {$_.IsDomainGroup -ne $true} |  select -Unique LoginName


Read more: http://www.sharepointdiary.com/2014/12/get-all-users-of-sharepoint-site-collection-web-app-farm.html#ixzz4olm8Kwdj

posted @ 2017-08-04 15:37  【上海】Peter  阅读(415)  评论(0)    收藏  举报