Let me start this off by saying I’m new to PowerShell AND I’m sure someone could sum up my code in one line of code.
I was asked to provide a list of all users in a SharePoint Site Collection / Web App. The person asking this, was wanting to see each user, the site and list they had access to. More or less I needed to iterate through all the sites, loop on the user, loop again on the site, then loop on the lists.
So the layout I could provide was:
Site Collection
User Name
Site
List
I’m outputting the results to a file name UserAccess.txt on the C:\ drive.
[System.Reflection.Assembly]::Load(“Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c”) [System.Reflection.Assembly]::Load(“Microsoft.SharePoint.Portal, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c”) $spsite=[Microsoft.SharePoint.SPSite]("http://sharepoint/") out-file c:\UserAccess.txt -append foreach ($Site in $spsite.AllWebs) { "Site Collection Name: $Site" | out-file c:\UserAccess.txt -append foreach ($User in $Site.SiteUsers) { "--User Name: $User" | out-file c:\UserAccess.txt -append foreach ($Site in $spsite.AllWebs) { $SitePermissions = $Site.Permissions foreach($mySitePermission in $SitePermissions) { if($User.ID -eq $mySitePermission.Member.ID) { "----Site Name: $Site" | out-file c:\UserAccess.txt -append } } foreach($myList in $Site.lists) { $myListPermissions = $myList.Permissions foreach($myListPermission in $myListPermissions) { if($User.ID -eq $myListPermission.Member.ID) { "------List Name: $MyList" | out-file c:\UserAccess.txt -append } } } $Site.Dispose() } $Site.Dispose() } }Let me know if you have any questions or need any help.