WebApplication policy

A web application is composed of an Internet Information Services (IIS) web site that acts as a logical container for the site collections that you create. Before you can create a site collection, you must create a web application.

A web application can contain multiple site collections. Managing permissions for multiple collections can be difficult, especially if some users or groups need permissions other than those that apply for the whole web application.

Permission policies provide a centralized way to configure and manage a set of permissions that applies to only a subset of users or groups in a web application.

Below piece of code gets the webapplication user policy details for all the webapplications in SharePoint farm.

  1. Function GetAllWebAppPolicy()
  2. {
  3. $Output = $scriptBase + "\" + "FarmWebAppPolicyDetails.csv";
  4. "WebAppURL" + "," + "UserName" + "," + "Permissions" | Out-File -Encoding Default -FilePath $Output;
  5. $empty = ""
  6. $webapplications = get-spwebapplication
  7. foreach($webapplication in $webapplications)
  8. {
  9. $webapplication.url + "," + $empty + "," + $empty | Out-File -Encoding Default -Append -FilePath $Output;
  10. write-host "Generating web policy report for the web aplication" $webapplication.url -fore magenta
  11. foreach($policy in $webapplication.policies)
  12. {
  13. write-host $policy.username -fore cyan
  14. $empty + "," + $policy.username + "," + $empty | Out-File -Encoding Default -Append -FilePath $Output;
  15. foreach($role in $policy.PolicyRoleBindings)
  16. {
  17. write-host $role.name -fore yellow
  18. $empty + "," + $empty + "," + $role.name | Out-File -Encoding Default -Append -FilePath $Output;
  19. }
  20. }
  21. }
  22. write-host "Web policy report generated" -fore green
  23. }
Complete Code
  1. $LogTime = Get-Date -Format yyyy-MM-dd_hh-mm
  2. $LogFile = ".\GetAddRemoveUsersToSPFarmAdminGroupPatch-$LogTime.rtf"
  3. # Add SharePoint PowerShell Snapin
  4. if ( (Get-PSSnapin -Name Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue) -eq $null ) {
  5. Add-PSSnapin Microsoft.SharePoint.Powershell;
  6. }
  7. import-module WebAdministration
  8. $scriptBase = split-path $SCRIPT:MyInvocation.MyCommand.Path -parent
  9. Set-Location $scriptBase
  10. write-host "TESTING FOR LOG FOLDER EXISTENCE" -fore yellow
  11. $TestLogFolder = test-path -path $scriptbase\Logs
  12. if($TestLogFolder)
  13. {
  14. write-host "The log folder already exist in the script location" -fore yellow
  15. $clearlogfolder = read-host "Do you want to clear the log folder (y/n)"
  16. if($clearlogfolder -eq 'y')
  17. {
  18. write-host "The user choosen to clear the log folder" -fore yellow
  19. write-host "Clearing the log folder" -fore yellow
  20. remove-item $scriptbase\Logs\* -recurse -confirm: $false
  21. write-host "Log folder cleared" -fore yellow;
  22. }
  23. else {
  24. write-host "The user choosen not to clear the log files" -fore yellow;
  25. }
  26. }
  27. else {
  28. write-host "Log folder does not exist" -fore yellow
  29. write-host "Creating a log folder" -fore yellow
  30. New-Item $Scriptbase\Logs -type directory
  31. write-host "Log folder created" -fore yellow;
  32. }
  33. #moving any .rtf files in the scriptbase location
  34. $FindRTFFile = Get-ChildItem $scriptBase\*.* -include *.rtf
  35. if($FindRTFFile) {
  36. write-host "Some old log files are found in the script location" -fore yellow
  37. write-host "Moving old log files into the Logs folder" -fore yellow
  38. foreach($file in $FindRTFFile)
  39. {
  40. move-item -path $file -destination $scriptbase\logs;
  41. }
  42. write-host "Old log files moved successfully" -fore yellow;
  43. }
  44. $TestPath = test-path -path $scriptbase\SitesinFarm.txt
  45. if($TestPath) {
  46. remove-item $scriptbase\SitesinFarm.txt;
  47. }
  48. start-transcript $logfile
  49. Function GetAllWebAppPolicy() {
  50. $Output = $scriptBase + "\" + "FarmWebAppPolicyDetails.csv";
  51. "WebAppURL" + "," + "UserName" + "," + "Permissions" | Out-File -Encoding Default -FilePath $Output;
  52. $empty = ""
  53. $webapplications = get-spwebapplication
  54. foreach($webapplication in $webapplications)
  55. {
  56. $webapplication.url + "," + $empty + "," + $empty | Out-File -Encoding Default -Append -FilePath $Output;
  57. write-host "Generating web policy report for the web aplication" $webapplication.url -fore magenta
  58. foreach($policy in $webapplication.policies)
  59. {
  60. write-host $policy.username -fore cyan
  61. $empty + "," + $policy.username + "," + $empty | Out-File -Encoding Default -Append -FilePath $Output;
  62. foreach($role in $policy.PolicyRoleBindings)
  63. {
  64. write-host $role.name -fore yellow
  65. $empty + "," + $empty + "," + $role.name | Out-File -Encoding Default -Append -FilePath $Output;
  66. }
  67. }
  68. }
  69. write-host "Web policy report generated" -fore green
  70. }
  71. write-host ""
  72. GetAllWebAppPolicy
  73. write-host "SCRIPT COMPLETED" -fore green
  74. stop-transcript
Conclusion

Thus this article outlines on how to get webapplication user policy details using powershell script.