magritton
8/1/2014 - 6:03 PM

This give a list of users through both active directory and SharePoint direct permissions. This is unfinished and needs a bunch of improveme

This give a list of users through both active directory and SharePoint direct permissions. This is unfinished and needs a bunch of improvements. It does not iterate through the SharePoint groups

Add-PSSnapin Microsoft.SharePoint.PowerShell
$WebUrl = 'http://portal.opwftg.com/sites/OPWSS/Teams/Acq'
$Web = Get-SPWeb $WebUrl
$ListName = 'Industry Intelligence'
$List = $web.Lists[$ListName]
$siteCollUsers = $web.SiteUsers
#$siteCollUsers = $list.user
$users = $list.permissions.member.users

 foreach($user in $users)
 {
# $user.IsDomainGroup
 #$domain = $ADGroupName.substring(0, $user.IndexOf("\") + 1) 
 $groupName = 'OPWFTG SP OTP ACQ Intelligence Contributors' #$ADGroupName.Remove(0, $user.IndexOf("\") + 1)
 if($user.IsDomainGroup -eq $true)
     {
     #$user.DisplayName
        if($user.DisplayName.Contains('OPWFTG'))
        {
            #$user
            $strFilter = "(&(objectCategory=Group)(name="+($groupName)+"))"
            #"Removed: " 
            #$adName = $user.DisplayName.Replace("OPWFTG\","")
            #$adName
            #$strFilter = "(&(objectCategory=Group)(name="+($adName)+"))" 
            $objDomain = New-Object System.DirectoryServices.DirectoryEntry 
            $objSearcher = New-Object System.DirectoryServices.DirectorySearcher 
            $objSearcher.SearchRoot = $objDomain 
            $objSearcher.Filter = $strFilter 

            $colProplist = ("name","member","objectclass") 
                    foreach ($i in $colPropList) 
                    { 
                        $catcher = $objSearcher.PropertiesToLoad.Add($i) 
                    } 
            $colResults = $objSearcher.FindAll() 
            foreach ($objResult in $colResults) 
            { 
            if($objResult.Properties["Member"] -ne $null) 
            { 
                foreach ($member in $objResult.Properties["Member"]) 
                {
                   $indMember = [adsi] "LDAP://$member"# $member
                   $indMember.Name | Out-File -Filepath "E:\temp\users.txt"  -Append
                }

            }
            }##ends for each colresults
            }##end the if display name
     }
     else
     {
        $user.DisplayName | Out-File -Filepath "E:\temp\users.txt"  -Append
     }
 }



$web.dispose()