Home

Changing the "Allow members to share" SharePoint site Access Requests setting using Office Dev PnP

Contributor

Changing the "Allow members to share" SharePoint site Access Requests setting using Office Dev PnP

How can I set the "Allow members to share the site and individual files and folders" setting using the Office Dev PnP Provisioning Engine or PowerShell commands? I haven't found this specific setting in the commands.

 

I mean changing the following setting(s) by PowerShell / remote provisioning:

Access Requests Allow members to share.png

6 Replies

Re: Changing the "Allow members to share" SharePoint site Access Requests setting using Of

[ Edited ]

Hello Harold, 

 

Are you using SPO? This url might point you in the right direction regarding changing the setting programatically for SharePoint online: 

https://blogs.msdn.microsoft.com/chandru/2015/12/31/sharepoint-onlinecsom-change-access-requests-set... (there is a comment with a suggestion to how this can be removed with powershell)

 

I have just started looking into this, so haven't tested this myself yet. 


Let me know when you find a way to have this setting un-checked during site provisioning with PnP Provisioning Engine, as I am currently searching for that myself.

 

Re: Changing the "Allow members to share" SharePoint site Access Requests setting using Of

You can use this script. You need to install CSOM module Version 16.1.4727.1200 and above to use this. 

 

$SiteUrl = "https://<TenantName>.sharepoint.com/sites/<Sitename>"  
$UserName = "admin@<TenantName>..onmicrosoft.com"  
$Password ="password"
$loadInfo1 = [System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint.Client") 
$loadInfo2 = [System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint.Client.Runtime")
$loadInfo3 = [System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint.Client.UserProfiles")
#$sstr = ConvertTo-SecureString -string $AdminPass -AsPlainText -Force
$Securepass = ConvertTo-SecureString $Password -AsPlainText -Force
$context = New-Object Microsoft.SharePoint.Client.ClientContext($SiteUrl)
$context.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($UserName,$Securepass)
$Web = $context.Web
$AllProperties=$Web.AllProperties
$context.Load($Web)
$context.Load($AllProperties)
$context.ExecuteQuery()
$Web.MembersCanShare=$false
$web.Update();
$web.Context.ExecuteQuery()
$AssociatedMember=$web.AssociatedMemberGroup
$context.Load($AssociatedMember)
$context.ExecuteQuery()
$web.AssociatedMemberGroup.AllowMembersEditMembership = $false
$web.AssociatedMemberGroup.Update();
$web.Context.ExecuteQuery() 
Highlighted

Re: Changing the "Allow members to share" SharePoint site Access Requests setting using Of

I created a extention for that:

  try
                {
                    Web rootweb = ctx.Site.RootWeb;
                    ctx.Load(rootweb, w => w.MembersCanShare);
                    ctx.ExecuteQueryRetry();
                    SharingConfiguration sharingSettings = configurationData.ToConfigObject<SharingConfiguration>();
                    // Set MembersCanShare, default to false

                    rootweb.MembersCanShare = sharingSettings.Sharing.MembersCanShare ? sharingSettings.Sharing.MembersCanShare : false;
                    rootweb.Update();
                    ctx.Load(rootweb, w => w.AssociatedMemberGroup.AllowMembersEditMembership);
                    ctx.ExecuteQueryRetry();

                    // Set AllowMembersEditMembership, default to false
                    rootweb.AssociatedMemberGroup.AllowMembersEditMembership = sharingSettings.Sharing.AllowMembersEditMembership ? sharingSettings.Sharing.AllowMembersEditMembership : false;
                    rootweb.AssociatedMemberGroup.Update();
                    ctx.ExecuteQueryRetry();

                    ctx.Load(rootweb, w => w.RequestAccessEmail);
                    ctx.ExecuteQueryRetry();

                    rootweb.RequestAccessEmail = sharingSettings.Sharing.RequestAccessEmail;
                    rootweb.Update();
                    ctx.ExecuteQueryRetry();
                }
                catch (Exception ex)
                {
                    TraceHelper.WriteErrorToListener("LogFile", ex.Message);
                }

Re: Changing the "Allow members to share" SharePoint site Access Requests setting using Of

Great replies of you all. Thanks! I'm sure I'll be able to generate a solution using your input next week. I'll update when I got it working.

Re: Changing the "Allow members to share" SharePoint site Access Requests setting using Of

Is this for SharePoint On-Line or SharePoint On-Premises ? Or Both ?

Re: Changing the "Allow members to share" SharePoint site Access Requests setting using Of

Hi Nigel,

 

my example could be used for both..

 

Kr,

 

Paul

Related Conversations