SharePoint Online: PowerShell to Grant Site Permissions to User

Requirement: Grant permissions to SharePoint Online site using PowerShell

SharePoint Online: PowerShell to Set Site Permissions

In SharePoint Online modern sites, the default granularity options for accessing SharePoint content are as follows:

  • Full Control, which is granted to Owners
  • Edit, which is granted to Members
  • Read, which is granted to Visitors (guests).

The below PowerShell script adds users to the site with “Contribute” permissions directly.

#Load SharePoint CSOM Assemblies
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.dll"
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.Runtime.dll"
   
#Variables for Processing
$SiteURL = "https://crescent.sharepoint.com/Sites/warehouse"
$UserAccount = "[email protected]"
$PermissionLevel = "Contribute"

#Setup Credentials to connect
$Cred = Get-Credential

Try {
    #Setup the context
    $Ctx = New-Object Microsoft.SharePoint.Client.ClientContext($SiteURL)
    $Ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Cred.UserName,$Cred.Password)
      
    #Get the Web
    $Web = $Ctx.Web
    $Ctx.Load($Web)
    $Ctx.ExecuteQuery()

    #Ensure the user
    $User=$web.EnsureUser($UserAccount)
    $Ctx.Load($User)
    $Ctx.ExecuteQuery()

    #Get the Permission Level  
    $RoleDefinition = $web.RoleDefinitions.GetByName($PermissionLevel) 
    $RoleAssignment = New-Object Microsoft.SharePoint.Client.RoleDefinitionBindingCollection($Ctx)
    $RoleAssignment.Add($RoleDefinition)  
    
    #Assign Role Assignment to User
    $Permissions = $Web.RoleAssignments.Add($User,$RoleAssignment) 
    $Web.Update()
    $Ctx.ExecuteQuery()
  
    Write-host  -f Green "User '$UserAccount' has been Granted with Access '$PermissionLevel'!"
}
Catch {
    write-host -f Red "Error:" $_.Exception.Message
}

PnP PowerShell to Grant Permission to User

We can provide permissions to the site directly without adding users to existing site groups. Here is the PnP PowerShell to add a user to a site in SharePoint Online:

#Parameters
$SiteURL = "https://crescent.sharepoint.com/sites/Warehouse" 
$UserAccount = "[email protected]"
$PermissionLevel = "Contribute"

#Connect to PnP Online
Connect-PnPOnline -Url $SiteURL -UseWebLogin    

#grant access to sharepoint online site with powershell
Set-PnPWebPermission -User $UserAccount -AddRole $PermissionLevel

This PowerShell adds permissions to SharePoint Online site.

Salaudeen Rajack

Information Technology Professional with Two decades of SharePoint Experience.

Leave a Reply