Заблокировать все личные сайты в Sharepoint (Microsoft не может помочь)

#powershell #sharepoint

#powershell #sharepoint

Вопрос:

Есть ли способ заблокировать все личные сайты.

Я нашел скрипт для блокировки одного сайта

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

Это работает, но у меня есть сотни сайтов для блокировки. Сначала мне нужно будет перечислить все сайты, а затем один за другим заблокировать их.
Здравствуйте,

Есть ли способ автоматизировать это и ЗАБЛОКИРОВАТЬ все сайты?

Я хочу временно заблокировать сайты. Эта блокировка не позволяет пользователям, у которых есть личный сайт, использовать их (новые ppl блокируются настройкой MySite).

Я напрямую связался с Microsoft, и они предоставили мне некоторые данные — они сказали мне, что я должен использовать ForEach , но я понятия не имею, как это использовать, и они мне больше не помогут, потому что это противоречит какой-то политике.

Ответ №1:

Подводя итог, вам нужно:

  1. Получить все личные сайты
  2. Запустите Set-SPOSite для каждого из них, используя любой механизм, например foreach

Вот полезная статья для 1. Получите список всех пользовательских URL-адресов OneDrive в вашей организации. Итак, вам нужно запустить что-то вроде:

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

И для 2. вы можете использовать что-то похожее на:

 foreach ($site in $allSites) {
  Set-SPOSite -Identity $site -LockState NoAccess
}
 

Комментарии:

1. В настоящее время скрипт работает, но я не знаю, как проверить, изменился ли статус. Я попробовал это: Get-SPOSite -IncludePersonalSite $true он печатает все сайты, но как распечатать все сайты со статусом LockState? Спасибо

2. Взгляните на Where-Object . Возможно, вы захотите исключить | Select -ExpandProperty Url из начального командлета, чтобы получить доступ к большему количеству данных.

3. Когда я удаляю URL-адрес Select -ExpandProperty, он вообще не изменяет вывод. В случае простого сценария shellpoint для изменения состояния блокировки, что лучше? С параметром или без него?

4. Также не вижу, чтобы это работало… Connect-SPOService -Url https://xxx-admin.sharepoint.com $allSites = Get-SPOSite -IncludePersonalSite $true -Limit all -Filter "Url -like '-my.sharepoint.com/personal/'" | Select -ExpandProperty Url foreach ($site in $allSites) { Where-object -Identity $site -LockState NoAccess }

5. Это тоже не работает: $allSites = Get-SPOSite -IncludePersonalSite $true -Limit all -Filter "Url -like '-my.sharepoint.com/personal/'" foreach ($site in $allSites) { $site where -LockState NoAccess }

Ответ №2:

Вот что я придумал, чтобы получить все заблокированные сайты. Он включает в себя все информационные поля. Измените путь экспорта на подходящее для вас место назначения:

 Get-sposite -includepersonalsite $true -Limit ALL -Filter "LockState -like 'NoAccess'" |Export-csv -Path 'C:PowerShellOneDriveSitesLocked.csv' -Delimiter ',' -NoTypeInformation