SOLVED

Block all personal sites in Sharepoint (Microsoft cannot help)

Copper Contributor
Hello,


Is there a way to lock all personal sites.

I found a script to block one site

Connect-SPOService -Url https://xxx-admin.sharepoint.com
$siteUrl = "https://xxx-my.sharepoint.com/personal/adelev_xxx_onmicrosoft_com"
$site = Get-SPOSite $siteUrl -Detailed
Set-SPOSite $site -LockState NoAccess


It works, but I have hundreds of sites to block. First I would need to list all sites and then one by one block them.

Is there a way to automate it and BLOCK all sites?

I want to lock sites temporarily. This lock prevent users that has a personal site to use them (new ppl are blocked by MySite setting).


I contacted Microsoft directly and they provided me with some data - they told me that I should use ForEach, but I have no idea how to use it, and they won't help me any further cause it is against some policy.

4 Replies
best response confirmed by F0RCE (Copper Contributor)
Solution

You can use the Get-SPOSite cmdlet to list all "personal" sites:

 

$ODFBsites = Get-SPOSite -IncludePersonalSite $true -Limit all -Filter "Url -like '-my.sharepoint.com/personal/'"

 

then loop over each site and change the state:

 

$ODFBsites | % {Set-SPOsite $_.Url  -LockState NoAccess }

 

@Vasil Michev 

Thank you very much.

Could you please answer one more question?

 

How can I check if the status changed? How can I list all sites LockState :(

I just cannot make it work :(

For that, run the Get-SPOSite cmdlet with the -Detailed switch.

@Vasil Michev 

Unfortunately it was too hard to do for me.

Thanks for trying to help this useless piece of junk (me)

1 best response

Accepted Solutions
best response confirmed by F0RCE (Copper Contributor)
Solution

You can use the Get-SPOSite cmdlet to list all "personal" sites:

 

$ODFBsites = Get-SPOSite -IncludePersonalSite $true -Limit all -Filter "Url -like '-my.sharepoint.com/personal/'"

 

then loop over each site and change the state:

 

$ODFBsites | % {Set-SPOsite $_.Url  -LockState NoAccess }

 

View solution in original post