SharePoint Online: Share Site and Invite External Users using PowerShell
Requirement: Share SharePoint Online Site with Multiple External Users using PowerShell.
How to Invite External Users to SharePoint Online?
This guide will show you how to add an external user to your SharePoint Online site. We will also show you how to use PowerShell to add external users to your SharePoint Online. This can be especially useful if you manage multiple SharePoint Online sites and need to grant access quickly and easily. We will walk you through the required steps and provide examples to help make the process easier!
Before adding an external user to the SharePoint Online site, ensure your site collection is configured to allow external users! You can quickly check if external sharing is enabled for your SharePoint tenant by going to:
- SharePoint Admin Center, Expand Policies and then Sharing
- In the “External Sharing”, make sure the “SharePoint” settings are not set to “Only people in your organization”. If it’s set to “Existing guests” only, then you must invite an external user to your Azure AD first prior to adding them to SharePoint Online.
Similarly, check if the external sharing is enabled at the site collection level by:
- Login to SharePoint Admin Center, Expand Sites >> Active Sites
- Select the target site from the list and click on the “Sharing” button in the ribbon.
- In the Sharing panel, make sure it’s not set to “Only People in your Organization” (which means, External sharing is disabled!)
How to share a SharePoint Online Site with External Users?
Once you confirm external sharing is enabled for your site, do the following to share the site with external users.
- Navigate to your SharePoint Online site that you want to share with external users
- Click on the “Share” button in the top-right corner. Alternatively, you can click on Site Settings >> Site Permissions >> Share Site.
- In the Share site panel, Enter the E-mail ID of the external user, select the permission level such as “Read”, choose whether sharing invitation to be sent, and then click on “Share” to add an external user to SharePoint Online.
Let’s see how to share with external users using PowerShell in SharePoint Online:
SharePoint Online: Share with External Users using PowerShell
This PowerShell script invites external users to a SharePoint site and grants View permissions to the site. A custom email message is also included in the invitation email.
#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"
#Set Variables
$SiteURL = "https://crescent.sharepoint.com/sites/marketing"
$Users = "[email protected]","[email protected]"
#Get 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)
#Create Request List
$UserList = New-Object "System.Collections.Generic.List``1[Microsoft.SharePoint.Client.Sharing.UserRoleAssignment]"
#Set Role for each user
ForEach($User in $Users)
{
$UserRoleAssignment = New-Object Microsoft.SharePoint.Client.Sharing.UserRoleAssignment
$UserRoleAssignment.UserId = $User
$UserRoleAssignment.Role = [Microsoft.SharePoint.Client.Sharing.Role]::View #Other Options: Edit, or Owner
$UserList.Add($UserRoleAssignment)
}
#Send invites
$EmailMessage = "Please accept this invitation to our Marketing Site. Thanks!"
[Microsoft.SharePoint.Client.Sharing.WebSharingManager]::UpdateWebSharingInformation($Ctx, $Ctx.Web, $UserList, $True, $EmailMessage, $True, $True)
$Ctx.ExecuteQuery()
}
catch {
write-host "Error: $($_.Exception.Message)" -foregroundcolor Red
}
This script sends invites to external users as:
External Users can click the link in the email to access your SharePoint site. Please note, The user must have a Microsoft Live ID! They can create a Microsoft account from their Email if it’s not created already.
You can also invite an external user using SharePoint Online Management Shell cmdlet or PnP PowerShell! How to Add an External User to SharePoint Online using PowerShell?
I have a document library that contains many folders (each folder will be shared to a different external user). Is there any way I can use PowerShell to share pre existing folders to external users via CSV?
Thanks
I’ve tried this multiple times and I receive no errors and no emails.
Is there somewhere to check if invitations have been sent?
Yes, Go to Site Settings >> ” Access requests and invitations ” to get all pending access requests and invitations.